我正在以动态方式使用 $watch
,因此每次调用都会创建另一个 $watch
,而我想解除绑定(bind)之前的 $watch
。
$scope.pagination =function(){
$scope.$watch('currentPage + numPerPage', function (newValue,oldValue) {
$scope.contestList = response; //getting response form $http
}
}
我有多个标签。单击选项卡时,将调用分页函数:
$scope.ToggleTab = function(){
$scope.pagination();
}
因此它会创建多个 $watch
并且每次我单击选项卡时它都会创建另一个。
最佳答案
在添加新 watch 之前,您需要检查观察者是否已经存在。如果它已经存在,您可以调用 watcher()
这将从 $scope.$$watchers
数组中删除观察者。然后注册您的 watch 。这将确保您的 watch 仅创建一次。
var paginationWatch;
$scope.pagination = function() {
if (paginationWatch) //check for watch exists
paginationWatch(); //this line will destruct watch if its already there
paginationWatch = $scope.$watch('currentPage + numPerPage', function(newValue, oldValue) {
//getting response form $http`
$scope.contestList = response;
}
});
}
关于javascript - 如何在angularjs中防止/取消绑定(bind)以前的$watch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30189361/