2013-10-09 81 views
0

我討厭提出問題,已經有很好的信息,但我錯過了一些東西來保持我的實現工作。

我的場景是在服務上使用遞歸函數來以迭代塊加載我的數據。所有數據都由示波器捕獲,但只有第一組顯示,除非您導航離開然後再返回。顯然,我需要$看我的範圍。我無法弄清楚如何去做。

AccountService運行一個名爲getAccountsByPage的方法,該方法傳遞1的參數。然後該函數自動調用值爲2的值,依此類推。

$routeProvider.when('/accounts/', { 
    ... 
    controller: function ($scope, AccountService) { 
     var accounts = $scope.accounts = AccountService.getAccountsByPage(1); 
     $scope.$watch('accounts', function(newVal, oldVal) { 
      console.log(newVal, oldVal); 
     }); 
    } 
}); 

console outputs: undefined, undefined 
    [Object, Object, Object...] undefined 

要清楚,獲取數據不是問題。更新視圖是。 Angular說,不要在控制器上使用$ watch,但似乎每個人都這麼做...

回答

0

從您發佈的代碼中,只有當控制器第一次實例化時,纔會設置一次$scope.accountsAccountService.getAccountsByPage正在做什麼並不重要。不管它返回的將被放入$scope.accounts,並觸發$watch一次。它不會再被觸發,直到$scope.accounts發生變化,我從發佈的代碼中看不到任何地方發生。