2016-05-13 70 views
0

我有一個控制器,它看起來是這樣的:

(函數(){ 「使用嚴格的」;

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數組被填充正確但是,如果數組中的數據已經改變,我有刷新視圖的麻煩,或者視圖中沒有任何事情發生,或者我看到$的無限循環看。

任何幫助是偉大的y讚賞。

+0

這裏有幾個問題。首先是你的'$ watchCollection'調用'getPosts'異步方法,但不會對數據做任何事情。另外,您正在將'$ scope'和ControllerAs混合在同一個控制器中,這可能會導致混淆。 – Claies

回答

0

爲什麼得到無限循環:

  1. $scope.$watchCollection('posts',function(){...})看着你post陣列,當你刷新視圖並post改變,手錶監聽觸發

  2. 然後聽衆做PostService.getPosts();,與$scope.posts = p.data;解決,這也改變了post(更多:post被重新設置爲從後端數據,這就是爲什麼沒有在你的看法改變)再次,然後手錶監聽觸發。然後再次做PostService.getPosts();,然後再一次。

  3. 所以你得到一個無限循環。