我有一个 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 之后才会运行,(我意识到这有点 hack 但它不会引起问题。)我得到一个错误无法设置未定义的属性:
$scope.phones[i].weight = weight;
如果我尝试在 .get 方法之外访问它,则没有问题,但是 weight 的新值在 get 方法之外不存在。
最佳答案
在循环之前等待电话列表:
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;
});
}
}
关于javascript - 无法设置未定义 Angular js 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29661862/