我有一个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方法之外不存在新的权重值。
答案 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;
});
}
}