2013-07-22 67 views
1

我正在使用angular.js,並試圖在$變量發生變化時使用$ watch來激活一個函數。它在數據初始加載時觸發,但不在之後觸發。我不確定這裏究竟發生了什麼?

代碼如下粘貼:

function gradeChart($scope, $http) { 
    $http.get('studentData.json').success(function(data) { 
     $scope.students = data; 
    }); 

    $scope.$watch('students',function(change){ 
     console.log('this fires on load but not after'); 
    }); 
} 
+2

是請求被成功執行?嘗試添加一個錯誤函數或使用chrome或螢火蟲監視請求以查看請求是否確實成功執行。 –

回答

0

目前尚不清楚哪些代碼運行「後」和更新$scope.students

然而,這裏有與更新$範圍陣列的兩個最常見的問題:

  1. 如果重新分配$scope.students到一個新的數組中,$手錶仍可以看以前的陣列(參考) 。嘗試使用在你的angular.copy()代碼「之後」:
    angular.copy(data, $scope.students);

  2. 如果改變數組的元素之一,你需要爲使用$watchCollection(如果它是在版本角度你都可以使用)或檢查對象的平等,而不是引用(注意第三個參數):
    $scope.$watch('students',function(change){...}, true);

相關問題