如何在angularjs中阻止/取消绑定之前的$ watch

我正在以动态的方式使用$watch ,因此在每次调用时它都会创建另一个$watch而我想解开之前的$watch

 $scope.pagination =function(){ $scope.$watch('currentPage + numPerPage', function (newValue,oldValue) { $scope.contestList = response; //getting response form $http } } 

我有多个标签。 单击选项卡时,将调用分页函数:

 $scope.ToggleTab = function(){ $scope.pagination(); } 

所以它创建多个$watch ,每次我点击tab都会创建另一个。

在添加新手表之前,您需要检查观察者是否已经存在。 如果它已经存在,你可以只调用watcher()这将从$scope.$$watchers移除观察者$scope.$$watchersarrays。 然后注册你的手表。 这将确保您的手表只创建一次。

 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; } }); }