2014-10-09 4 views
0

У меня возникла проблема с функцией in/in внутри функции, которая не работает.Для работы в цикле, не работающем в служебной функции AngularJS

$scope.files = []; 

jobslisting.getJobs(function(data){ 

    for(var i = 0; i < data.length; i++){ 
     $scope.files.push({name:data[i]}); 
    } 

    console.log(data);   
    console.log($scope.files); 

}); 

console.log (данные) возвращает:

Object {2: "item1", 3: "item2", 4: "item3", 5: "item4", 6: "item5", 7: "item6", 8: "item7", 9: "item8"} 

console.log ($ scope.files) возвращает

[] 

Заранее спасибо за любые советы!

ответ

1

Проблема в том, что цикл for никогда не запускается, потому что вы вызываете .length на объект, а не на массив.

Вместо замены forangular.forEach() петли, как это:

angular.forEach(data, function(val, key) { 
    $scope.files.push({name: val}); 
}); 

Подробнее: https://docs.angularjs.org/api/ng/function/angular.forEach

+0

Спасибо, он работал как шарм! – SKYnine

1

Похоже, что данные не являются массивом, а объектом с цифрами в качестве ключей. Я бы постарался убедиться, что везде, где вы вызываете службу, отправляется в массив. Также может быть разумным использовать метод итератора для данных, поэтому он будет работать с массивами или объектами. Для этого вы можете катить свой собственный метод или использовать тот, который встроен в underscore или lodash.

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