2014-01-08 25 views
0

Я пытаюсь передать данные из массива в новый объект View, и хотя «account.length» возвращает 6, цикл только get выполняется один раз.Titanium for loop выполняется только один раз

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 представляет собой слой над простым видом и данных является массив, который уже содержит данные (тот же формат, что и для толкающего заявления). Кто-нибудь сталкивался с той же проблемой?

ответ

0

В коде, который вы указали, нет, чтобы предотвратить продолжение цикла. Если я выведу недостающие переменные и функции в вашем коде, я получаю что-то вроде ниже, которое выполняется успешно и проходит через 6 циклов. Из-за этого в вашем коде должно быть что-то не так. Попробуйте обернуть ваш цикл for в try {} catch (e) { alert(e); }. Попробуйте придумать более простой пример, который воспроизводит ошибку, которую вы видите. Попробуйте удалить биты вашего кода и увидеть, что мешает ему закончить.

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); } ', поскольку исключений для catch нет. Остальная часть кода после цикла for выполняется отлично, но как только я делаю 'v = новый HomeView ({menuBtn: button, id: id});' внутри цикла, он ломается. – gaethofs

Смежные вопросы