2014-01-08 199 views
0

我試圖從一個數組傳遞數據到一個新的視圖對象,雖然'accounts.length'返回6,循環只能執行一次。鈦for循環只執行一次

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' 
    }); 
} 

帳戶是一個簡單的多維數組,HomeView是通過簡單查看一個層和數據是已經包含數據(相同的格式,用於推語句)的陣列。 任何人都遇到同樣的問題?

回答

0

您所顯示的代碼中沒有任何內容會阻止循環繼續。如果我推斷代碼中缺少的變量和函數,我會得到類似下面的內容,它可以成功運行並通過6個循環。正因爲如此,你的代碼中的其他地方會出現問題。嘗試在try {} catch (e) { alert(e); }中包裝您的for循環。試着想出一個更簡單的例子來重現你所看到的錯誤。嘗試刪除你的代碼,看看是什麼阻止它完成。

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 
+0

我想出了這個問題,但還沒有解決。我無法將它封裝在try {} catch(e){alert(e);因爲沒有例外可以捕捉。 for循環後的其餘代碼執行正常,但只要我做'v = new HomeView({menuBtn:button,id:id});'在循環內部,它就會中斷。 – gaethofs