如何在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.$$watchers
arrays。 然后注册你的手表。 这将确保您的手表只创建一次。
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; } }); }