2014-10-09 41 views
0

我有一個for/in函數不起作用的問題。For/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,而不是在數組上。

相反,與angular.forEach()取代你for循環,就像這樣:

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

更多信息:https://docs.angularjs.org/api/ng/function/angular.forEach

+0

謝謝,它的工作就像一個魅力! – SKYnine 2014-10-09 18:01:36

1

它看起來像數據不是一個數組,而是一個數字作爲鍵的對象。我會檢查以確保無論您調用服務的哪個位置正在發送數組。對數據使用迭代器方法也許是明智的,所以它可以用於數組或對象。爲此,您可以推出自己的方法,或使用內置於underscorelodash中的方法。