У меня есть список объектов json, $ scope.phones и папка, полная json-файлов, с дополнительными данными о каждом телефоне. Я пытаюсь перебирать файлы, чтобы захватить дополнительную информацию, чтобы поместить в мой список по каждому телефону:не может установить свойство неопределенного углового js
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 установлен, (я не понимаю, . его немного рубить, но его не вызывают проблем), я получаю сообщение об ошибке не может установить свойство неопределенных на:
$scope.phones[i].weight = weight;
Если я пытаюсь открыть вне метода .get есть не проблема, однако новое значение веса не существует вне метода get.
Есть несколько вопросов, здесь происходит, во-первых, вы должны смотреть на обещания не обновлять телефоны, пока не будут загружены телефоны, так как есть возможно, для загрузки телефонов может потребоваться больше 1 секунды. Кроме того, когда 'Phone.get' разрешается, я всегда буду' $ scope.phones.length', вы захотите проверить закрытие, чтобы исправить это: http://stackoverflow.com/questions/750486/javascript-closure-inside -loops-простой практический пример, – HJ05