我正在尝试将数据从数组传递到新的View对象中,虽然'accounts.length'返回6,但循环只执行一次。
var title;
var id;
var button;
var v;
//alert(accounts.length); --> 6
for(i=0; i<accounts.length; i++) {
title = accounts[i].title;
id = accounts[i].id;
button = Titanium.UI.createButton({
backgroundImage: 'images/List.png',
height:37,
width: 37,
});
menuBtns.push(button);
v = new HomeView({menuBtn:button, id:id});
//alert(title'); --> only once
data.push({
title:title,
view:v,
dataType:'dashboardapplication'
});
}
Accounts是一个简单的多维数组,HomeView是一个简单View上的层,data是一个已经包含数据的数组(与push语句的格式相同)。 有人遇到过同样的问题吗?
答案 0 :(得分:0)
您显示的代码中没有任何内容可以阻止循环继续。如果我在你的代码中推断出缺少的变量和函数,我得到类似下面的东西,它成功运行并通过6个循环。因此,代码中的其他地方必定存在问题。尝试在try {} catch (e) { alert(e); }
中包装for循环。尝试提出一个更简单的例子来重现你所看到的bug。尝试删除代码中的一些内容,并查看阻止其完成的内容。
var accounts = [
{ title: '1', id: '1' },
{ title: '2', id: '2' },
{ title: '3', id: '3' },
{ title: '4', id: '4' },
{ title: '5', id: '5' },
{ title: '6', id: '6' }
],
menuBtns = [],
data = [];
function HomeView(args) {
}
var title;
var id;
var button;
var v;
alert('accounts length: ' + accounts.length); --> 6
for (i = 0; i < accounts.length; i++) {
title = accounts[i].title;
id = accounts[i].id;
button = Titanium.UI.createButton({
title: title,
height: 37,
width: 37
});
menuBtns.push(button);
v = new HomeView({menuBtn: button, id: id});
alert('title: ' + title); // --> 1 through 6
data.push({
title: title,
view: v,
dataType: 'dashboardapplication'
});
}
alert('data length: ' + data.length); // --> 6