我有一个活动指示器,我在自己的视图中制作,以便我可以将它放在我的每个视图中。附表是我应用中属性搜索功能的一部分。
activIndic.xml
<Alloy>
<ActivityIndicator id="activityIndicator" message="Loading..." indicatorColor="Alloy.CFG.design.colors.hudBlue"
style="Titanium.UI.ActivityIndicatorStyle.BIG_DARK"
>
</ActivityIndicator>
states.xml
<Alloy>
<Window id="winState" class="container vgroup" title="Search | States" >
<Label text="Click a state to continue." class="searchWinHint" id="hint"></Label>
<Require id="activityIndicator" src="activIndic" type="" ></Require>
<TableView id="stateList" class="tableView-search">
</TableView>
</Window>
states.js - searchState()
function searchState(){
$.activityIndicator.show();
pullStates();
$.stateList.addEventListener("click", function(e){
//Create global state abbreviation name
args.stateAbbr = e.row.children[1].text;
Alloy.createController("search_tab/counties", args).getView().open();
});
$.winState.add($.stateList);}
searchState是一个从&#34; open&#34;事件监听器绑定到状态窗口。 pullStates()使用HTTP客户端来填充表中的状态列表以供选择。注意该函数的重要部分是,在它结束时调用onload函数$.activityIndicator.hide()
,这样一旦数据加载,指示就会消失。
但是,我收到了错误
[ERROR] : TiExceptionHandler: (main) [951,2005] ----- Titanium Javascript Runtime Error -----[ERROR] : TiExceptionHandler: (main) [1,2006] -In /alloy/controllers/search_tab/states.js:1,336[ERROR] : TiExceptionHandler: (main) [0,2006] - Message: Uncaught TypeError: i.activityIndicator.show is not a function
我不明白错误发生的原因。我的印象是,如果通过<Require>
标记向XML添加了一个视图,那么states.js控制器应该能够通过引用它的id来处理该视图。还有其他我不知道的东西,或者某些设置错误吗?
答案 0 :(得分:0)
这是你的问题:
$.activityIndicator.show();
应该是
$.activityIndicator.activityIndicator.show();
第一个activityIndicator
指的是所需的controlerlessView:
<Require id="activityIndicator" src="activIndic" type="" ></Require>
,第二个activityIndicator
是您访问文件activIndic.xml
中定义的activityIndicator
这是具有函数show
答案 1 :(得分:0)
在 activIndic.js 中公开最重要的方法,
$.show = function(status){
$.activityIndicator.show();
}
$.hide = function(status){
$.activityIndicator.hide();
}
然后,在 states.js 中,您可以直接致电$.activityIndicator.show();
或$.activityIndicator.hide();