我可以在 AngularJS 范围内设置一个 $watch,以便在我感兴趣的表达式发生更改时收到通知。但是一旦我失去兴趣,我该如何停止观看呢?
问问题
31434 次
3 回答
146
当调用$watch
一个取消注册绑定表达式的函数时返回。
例如,观察一个变量foo
只改变一次:
var unregister = $scope.$watch('foo', function () {
// Do something interesting here ...
unregister();
});
希望有帮助:-)
于 2013-03-30T06:28:24.877 回答
22
作为附加评论,但不回答 - 这也是杀死事件侦听器的相同原则。
var unregister = $rootScope.$on("listen-for-something-cool", function($event, params) {
//Do cool stuff with params, then kill it
unregister();
};
只是我认为其他人知道会很酷的一个补充......
于 2014-07-14T10:13:23.790 回答
0
我不确定接受的答案是如何工作的!对我来说,它根本不起作用。
我使用的是 $watchCollection 而不是 $watch。然后我尝试将其更改为 $watch 并应用接受的答案,但无处可去!
唯一对我有用的是:
var watchFoo = $scope.$watch('foo', function () {
// Do something interesting here ...
return;
});
返回; 正在注销手表并打破手表循环。即使在循环中断后它也能正常工作。它能够检测到阵列上所做的更改。
我的代码看起来像:
var watchFoo = $scope.$watchCollection('foo', function (newFoo, oldFoo) {
if(condition) {
// Do something interesting here ...
return;
} else {
// Do something else here ...
}
});
如果它适合您,可以使用接受的答案,否则这个答案会派上用场!
于 2021-09-20T18:15:59.860 回答