AngularJS:清除 $watch
IT技术
javascript
angularjs
watch
2021-02-21 23:34:13
6个回答
$watch返回一个注销函数。调用它会注销$watcher.
var listener = $scope.$watch("quartz", function () {});
// ...
listener(); // Would clear the watch
scope.$watch 返回一个您可以调用的函数,该函数将取消注册手表。
就像是:
var unbindWatch = $scope.$watch("myvariable", function() {
//...
});
setTimeout(function() {
unbindWatch();
}, 1000);
如果您想在发生某些事情后立即清除它,您也可以清除回调中的手表。这样你的 $watch 将保持活动状态直到被使用。
像这样...
var clearWatch = $scope.$watch('quartzCrystal', function( crystal ){
if( isQuartz( crystal )){
// do something special and then stop watching!
clearWatch();
}else{
// maybe do something special but keep watching!
}
}
有时你的 $watch 正在调用dynamically它会创建它的实例,所以你必须在你的$watch函数之前调用注销函数
if(myWatchFun)
myWatchFun(); // it will destroy your previous $watch if any exist
myWatchFun = $scope.$watch("abc", function () {});
理想情况下,当您离开示波器时,应该移除每个自定义手表。
它有助于更好的内存管理和更好的应用程序性能。
// call to $watch will return a de-register function
var listener = $scope.$watch(someVariableToWatch, function(....));
$scope.$on('$destroy', function() {
listener(); // call the de-register function on scope destroy
});