如何在AngularJS中停止观看?

Thi*_*ilo 75 angularjs angularjs-scope

我可以在AngularJS范围上设置$ watch,以便在我感兴趣的表达式发生变化时收到通知.但是一旦我失去兴趣,我该如何停止观看?

Gol*_*den 142

$watch返回调用函数时,取消注册绑定表达式.

例如,观看变量foo只改变一次:

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

希望有所帮助:-)

  • 另一个注意事项:当您注册手表时,它会立即运行一次,然后每次值更改时再运行一次.所以上面的确切代码将运行一次watcher-function,然后在它对`foo`的任何变化做出反应之前取消注册.有点偏离主题,但我认为值得一提. (15认同)
  • 只是为了说清楚:在上面的例子中,从注册函数本身调用'unregister'回调.这不一定是这种情况,应用程序中其他地方的代码(即监视功能之外)可以愉快地调用它以确保永远不会再次调用监视功能. (14认同)

Ste*_*how 21

作为一个额外的评论,但没有回答 - 这也是杀死事件监听器的相同原则.

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

只是一个补充,我认为对其他任何人来说都很酷...