我有一个看起来像这样的控制器:
(function(){ "使用严格的&#34 ;;
angular.module("app")
.controller("postsController", postsController);
function postsController($scope, $http, $uibModal, PostService) {
var vm = this;
$scope.posts = [];
PostService.getPosts()
.then(function (p) {
$scope.posts = p.data;
}, function (error) {
vm.errorMessage = "Failed to load data: " + error;
});
$scope.$watchCollection('posts', function(newPosts, oldPosts) {
PostService.getPosts();
});
}
})();
从服务中提取原始数据,并正确填充posts数组。但是,如果数组中的数据已更改,则无法刷新视图。视图中没有任何反应,或者我看到$ watch的无限循环。
非常感谢任何帮助。
答案 0 :(得分:0)
为什么获得无限循环:
$scope.$watchCollection('posts',function(){...})
观看了您的post
数组,当您刷新视图并post
已更改,监听侦听器已触发。
然后听众执行PostService.getPosts();
,使用$scope.posts = p.data;
解决,这也会更改post
(更多:post
已设置回来自后端的数据,这就是为什么您的视图中没有任何变化),然后再次监听侦听器。然后再次PostService.getPosts();
,然后一次又一次。
所以你得到一个无限循环。