Я изучаю AngularJs, и я столкнулся с проблемой.
Я хочу показать массив предметов в представлении. Сначала в контроллере я определяю массив с помощью $ scope.arrName = [], затем я получаю данные от сторонней службы и добавляю их в массив с $ scope.arrName.push (данные [i]). Я понял, что для того, чтобы мое представление отображало изменения, я должен вставить $ scope. $ Apply после нажатия данных в массив.
Есть ли способ изменить массив и визуализировать изменения без $ scope. $ Apply? Почему код разбивается, если я изменяю $ scope.arraName с this.arrName? (Она бросает неперехваченный TypeError: Не удается прочитать свойство 'толчок' неопределенный)
Ссылки Код
Контроллер
angular.module('testApp')
.controller('testCtrl', function($scope) {
$scope.objects = [];
var service = new thirdPartyService();
service.getData(function(err, data) {
if (err) {
console.log('Error');
} else {
for (var i = 0; i < data.Contents.length; i++) {
$scope.objects.push(data.Contents[i].Key);
$scope.$apply();
}
}
});
});
Посмотреть
Просто нг-повтор, чтобы показать данные
ли то же самое. Если я пишу var arrName = [], прежде чем устанавливать его в this.arrName, ничего не изменится. И я не знаю, почему модель не отслеживает arrName, мне нужно вручную использовать $ scope. $ Apply to push изменения в представлении. – wOvalle