我正在使用 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');
});
}
最佳答案
尚不清楚什么代码“之后”运行并更新$scope.students
。
但是,以下是与更新 $scope 数组相关的两个最常见问题:
如果将
$scope.students
重新分配给新数组,$watch 可能仍在查看之前的数组(引用)。尝试在“之后”代码中使用angular.copy()
:
angular.copy(data, $scope.students);
如果要更改数组的一个元素,则需要使用 $watchCollection (如果它在您使用的 Angular 版本中可用)或检查对象相等而不是引用(注意第三个参数):
$scope.$watch('students',function(change){...}, true);
关于javascript - $scope.$watch 在 angular.js 中加载后不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17778569/