我正在學習AngularJs,而且我正面臨一個問題。我想在視圖中顯示項目數組。首先在控制器中使用$ scope.arrName = []定義數組,然後我從第三方服務接收數據並使用$ scope.arrName.push(data [i])將其添加到數組中。我發現爲了讓我的視圖呈現出更改,我必須在將數據推送到數組之後插入$ scope。$ apply。
有沒有辦法修改數組並在沒有$ scope的情況下渲染更改$ apply? 如果我用this.arrName更改$ scope.arraName,爲什麼代碼會中斷? (它拋出遺漏的類型錯誤:無法讀取屬性未定義 '推')
參考代碼
控制器
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();
}
}
});
});
查看
只是一個NG重複顯示數據
是一樣的。如果在將它設置爲this.arrName之前寫入var arrName = [],則沒有任何更改。我不知道模型爲什麼不跟蹤arrName,我必須手動$ scope。$ apply將更改推送到視圖。 – wOvalle 2014-10-05 04:19:27