我正在使用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');
});
}
答案 0 :(得分:0)
目前尚不清楚哪些代码在“之后”运行并更新$scope.students
。
但是,以下是与更新$ scope数组相关的两个最常见的问题:
如果您将$scope.students
重新分配给新数组,$ watch可能仍在查看上一个数组(引用)。尝试在“后”代码中使用angular.copy()
:
angular.copy(data, $scope.students);
如果要更改数组的其中一个元素,则需要使用$watchCollection(如果它在您正在使用的Angular版本中可用)或检查对象相等性参考(注3参数):
$scope.$watch('students',function(change){...}, true);