我如何停止在 AngularJS $观看?

我可以在 AngularJS 作用域上设置一个 $watch,当我感兴趣的表达式发生更改时将被通知。但是一旦我失去了兴趣,我怎样才能停止观看呢?

31818 次浏览

当调用 $watch时,返回一个取消注册绑定表达式的函数。

例如,观察一个变量 foo只变化一次:

var unregister = $scope.$watch('foo', function () {
// Do something interesting here ...
unregister();
});

希望这能有所帮助: -)

作为附加注释,但不回答——这也是杀死事件侦听器的相同原则。

var unregister = $rootScope.$on("listen-for-something-cool", function($event, params) {
//Do cool stuff with params, then kill it
unregister();
};

我只是想让其他人知道。

我不知道这个被接受的答案是如何起作用的! 对我来说,它根本没有起作用。

我使用的是 $watch Collection 而不是 $watch。然后我试图将它改为 $watch,并应用了已接受的答案,但是没有得到任何结果! !

唯一对我有用的是:

var watchFoo = $scope.$watch('foo', function () {
// Do something interesting here ...


return;
});

正在取消手表的注册,打破了手表的循环。即使在这个循环被打破之后,它仍然工作得很好。它能够检测到对 Array 所做的更改。

我的代码是这样的:

var watchFoo = $scope.$watchCollection('foo', function (newFoo, oldFoo) {
    

if(condition) {
// Do something interesting here ...
return;
} else {
// Do something else here ...
}
     

});

接受的答案可以使用,如果它为您工作,否则这个答案将派上用场!