无法设置未定义角度js的属性

时间:2015-04-15 22:14:05

标签: javascript json angularjs asynchronous web

我有一个json对象列表,$ scope.phones和一个包含json文件的文件夹,其中包含有关每部手机的其他数据。我正在尝试遍历这些文件,以获取有关每部手机的列表中的其他信息:

phonecatControllers.controller('PhoneListCtrl', ['$scope', 'Phone',
function($scope, Phone) {
$scope.phones = Phone.query();

var myTimer = window.setTimeout(function() {

    for (var i = 0; i < $scope.phones.length; i++){ 
        var weight = 0;             
        Phone.get({phoneId: $scope.phones[i].id}, function( phone) {
            weight = phone.sizeAndWeight.weight;
            $scope.phones[i].weight = weight;           
        });     
    };
} , 1000 );

$scope.orderProp = 'age';
}]);

定时器是这样的,直到scope.phones设置之后函数才会运行,(我意识到它有点像黑客但它没有引起问题。)我得到一个错误,无法设置undefined的属性:< / p>

$scope.phones[i].weight = weight;   

如果我尝试在.get方法之外访问它,则没有问题,但是在get方法之外不存在新的权重值。

1 个答案:

答案 0 :(得分:1)

在循环播放之前等待手机列表:

Phone.query().then(function(phones){
  for(var i=0; i<phones.length; i++){
    var weight = 0;             
    Phone.get({phoneId: phones[i].id}, function( phoneDetails) {
        weight = phoneDetails.sizeAndWeight.weight;
        phones[i].weight = weight;           
    });
  }
}
相关问题