Mobile 钛合金手机:使用另一个控制器关闭活动指示器
我有4个控制器,index.js、token.js、main.js和token.js。索引检查身份验证,如果找不到详细信息,则重定向到token.js以获取用户详细信息。如果验证检查,则会打开包含用户详细信息的main.js。现在,在token.js中打开命令之后,我有一行代码来显示指示器活动:Mobile 钛合金手机:使用另一个控制器关闭活动指示器,mobile,android-activity,titanium,Mobile,Android Activity,Titanium,我有4个控制器,index.js、token.js、main.js和token.js。索引检查身份验证,如果找不到详细信息,则重定向到token.js以获取用户详细信息。如果验证检查,则会打开包含用户详细信息的main.js。现在,在token.js中打开命令之后,我有一行代码来显示指示器活动: var dispIndicator = Alloy.createController('loader').getView(); dispIndicator.open(); 现在,我没有使用timeou
var dispIndicator = Alloy.createController('loader').getView();
dispIndicator.open();
现在,我没有使用timeout作为指示器,因为我想精确地知道main.js进程后面的显示何时完成。当所有内容都已获取且所有元素都已准备就绪时,在main.js中,我有以下几行代码来关闭指示器:
var dispIndicator = Alloy.createController('loader').getView();
dispIndicator.close(); // also tried hide();
但是,这不起作用,而是给出了一个未定义的错误
如何从主控制器中关闭加载程序?最简单的方法是使用alloy.js文件并创建全局函数来显示和隐藏加载指示器。我决定使用全局事件侦听器隐藏加载程序: alloy.js
var loaders = [];
Alloy.Globals.loading = function(view) {
if (!view.hasLoading) {
var loading = Alloy.createController('loading');
loaders.push({
view: view,
loading: loading.getView()
});
loading.indicator.show();
loading.loading.show();
view.add(loading.getView());
view.hasLoading = true;
}
};
Ti.App.addEventListener('app:loaded', function() {
for (var i in loaders) {
if (loaders[i].view && loaders[i].loading) {
loaders[i].view.remove(loaders[i].loading);
loaders[i].view.hasLoading = false;
}
}
loaders = [];
});