【发布时间】:2011-04-14 18:12:07
【问题描述】:
我正在调用 Titanium 模态窗口以打开然后运行一个函数,该函数会像这样循环一些数据;
窗口 1:
var win = Ti.UI.createWindow({
url: 'window2.js'
modal: 1
});
win.open();
窗口 2:(从窗口 1 调用)
win = Ti.UI.currentWindow;
function doLoop() {
Ti.API.info('doLoop fn called');
// I've tracked the issue down to here
var m = 0;
for(var i in list) { m++; }
Ti.API.info(m);
Ti.API.info('finished');
}
win.addEventListener('open', function() {
// list is dynamically generated and passed through successfully from window1.js
doLoop();
});
doLoop()每次调用成功,list每次调用成功。
第一次运行就完美了。第二次(不是第一次)运行它需要时间来暂停并运行循环,但 m 永远不会增加?循环暂停后输出“完成”。
有什么想法吗?
function buildMediaItemsSelectionTable() {
var mediaCount = 0, i;
for(i in mediaItemsSelectionList[0]) { mediaCount++; }
for(i=0,l=mediaCount;i<l;i++) {
addMediaItemsSelectionSongsRow(i);
}
}
【问题讨论】:
-
如果有帮助,列表存储在 Ti.App.Properties.getList('list');所以函数 doLoop() 每次都可以访问它。
-
JSON 对象,我相信大约 3 深的对象更多,但我只在拳头深度之后
-
好的,上面的代码更新得更好。我已经验证了该列表每次都与 Titanium 等效
Ti.API.info(list)一起存在,并且它确实存在并且通过该循环运行,但第二个循环永远不会运行,因为第一个循环永远不会增加 -
我向您保证,该列表永远不会为空。如果不是第一次,它将无法正常运行。我已经进行了几个测试,并在第二次将其限制在第一个循环中作为问题。我更想知道该循环是否正在缓存而不是第二次运行或类似的东西?
-
是的,是的,我什至验证了
mediaItemsSelectionList[0] === mediaItemsSelectionList[0],它正在检查缓存列表是否与每次调用都为真的动态版本完全相同?
标签: javascript mobile titanium appcelerator