【发布时间】:2016-11-04 09:23:41
【问题描述】:
我打开了 2 个窗口,一个主窗口;和一个“弹出”加载窗口,应该只显示片刻。
当我尝试时
loading.close();
加载屏幕,所有窗口立即关闭。没有错误代码或任何东西,应用程序直接关闭,因为屏幕上没有更多视图/窗口。 但我从未关闭主要的“索引”视图,所以我不明白它为什么会消失。 我的主要想法是使用一个
loading.hide();
为了隐藏加载屏幕并允许其余部分继续,但是当隐藏执行时,应用程序不会触发或响应任何事件,直到手动强制关闭。
更多代码:
index.js
var loading = Alloy.createController("loading").getView();
function updateMainMenu() {
if (Ti.App.dataReady){
//Actually create the main menù, only if data is available.
//Cut out of snippet due to sheer length.
//When menù is complete, close the loading window.
loading.close(); //##### THIS CLOSES ENTIRE APP #####
}
}
//##### IF LOADING IS HIDDEN INSTEAD, EVENTS NEVER TRIGGER #####
//When a list element is clicked open the corresponding page.
function onListClick(e) {
var win = Alloy.createController('controlPage', e.row.data).getView();
win.open();
}
//Loads the View, displays it and keeps it updated.
$.index.open();
loading.open();
setInterval(updateMainMenu, 2000);
loading.js/tss/xml 没有针对这个问题的相关代码,或者至少我是这么认为的。它只有一个窗口和一个每半秒改变一次图像的 imageView,并且在关闭之前它可以正常工作。
注意事项:
- 全局变量 Ti.App.dataReady 来自后台任务(另一个文件,工作正常);
- 事件 onListClick 已正确绑定并且可以正常工作(如果我一开始没有打开加载)
【问题讨论】:
-
您是否尝试创建加载指示器叠加层?在这种情况下,可能值得查看github.com/FokkeZB/nl.fokkezb.loading(并可能根据您的用例对其进行修改(即每半秒显示一次图像)
-
谢谢,最终结果有点像我想要的。尽管如此,这不是一个答案^^我想知道为什么关闭窗口会关闭应用程序(或冻结它)。现在,我将使用小部件。再次感谢!
标签: javascript titanium appcelerator titanium-alloy