我试图模仿Appcelerator钛合金中的活动指示器模块。
它工作正常,但我不明白2条线的工作原理。

activityIndi​​cator.js



$.hide = hide; // <= What does these two lines
$.show = show; // <= means. How Iam able to access hide and show functions in dashboard.js controller directly?

function hide () {
  $.loadingOverlay.hide();
  $.loadingIndicator.hide();
}

function show () {
  $.loadingOverlay.show();
  $.loadingIndicator.show();
}

(function init(){
     Titanium.API.trace("[activityIndicator] >> [init]");
})();





activityIndi​​cator.xml



<Alloy>
  <View id="loadingOverlay" visible="false" zIndex="1">
    <ActivityIndicator id="loadingIndicator"/>
  </View>
</Alloy>





我在另一个视图(即dashboard.xml)中需要此文件

在dashboard.js控制器中,我正在使用$ .loadIndicator.show()和$ .loadIndicator.hide()函数。

dashboard.js



//just the function related to loadIndicator
function serviceFailed(e) {

    $.loadIndicator.hide(); //hide function works well.

    var errorMessage = Ti.UI.createLabel({
        text : "Error loading data!",
        color : "red"
    });
    $.listContainer.add(errorMessage);
    alert("Failed:" + e.toString());
}

////just the function related to loadIndicator
function showList() {

    $.loadIndicator.show(); //this also works fine.

    serviceUtil.doUtilServiceCall(function(resp)    {
        populateList(resp);
        ReceivedData = resp;
        Ti.API.info('Data is set to response received.');
    }, serviceFailed);
}







如果我在activityIndi​​cator.js中注释掉前两行



$.hide = hide;
$.show = show;





然后显示show loadIndicator.show不是一个函数。和隐藏功能相同。

我不明白的是,这两行如何使隐藏和显示功能可访问。以及这两行可能等效的代码。

$在这里指的是什么?


  浏览完其他小部件后,我得到一个约定,如果您需要在View中使用小部件而不是Controller,则可以使用$ .variable将其设置为对外部世界可见。与module.exports相同,将其设置为对外界可见。


如果我错了,请纠正我。

最佳答案

$.hide = hide;



$读取名为$的变量的值。

.hide(假定该值是一个对象,否则将是一个错误)访问称为hide的属性。

= hide接受局部hide变量的值(这是同名的函数,因为它是使用函数声明创建的,因此被提升),并将其分配给该属性。

下一行以相同的方式工作,只是名称不同。


  我不明白的是,这两行如何使隐藏和显示功能可访问。


要么:


代码第一位中$变量的值的对象与后面$.loadIndicator的值的对象相同。
其他一些代码再次复制了这些功能



  以及这两行可能等效的代码。


为什么您需要执行相同操作的不同代码?

关于javascript - 不了解钛合金 Controller 中$ .variableName = functionName的含义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47453271/

10-13 07:43