如何在AngularJS中停止$观看?

nuypyhwy  于 2022-12-26  发布在  Angular
关注(0)|答案(3)|浏览(136)

我可以在AngularJS作用域上设置一个$watch,当我感兴趣的表达式发生变化时,它会通知我。但是当我失去兴趣时,我如何停止观察呢?

vu8f3i0k

vu8f3i0k1#

调用$watch时,返回一个注销绑定表达式的函数。
例如,观察变量foo仅改变一次:

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

t2a7ltrp2#

作为一个附加注解,但不是回答--这也是终止事件侦听器的相同原则。

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

只是一个补充,我想让其他人知道会很酷...

fhity93d

fhity93d3#

我不确定被接受的答案是如何工作的!对我来说,它一点也不起作用。
我使用的是$watchCollection而不是$watch。然后我试图将其改为$watch,并应用接受的答案,但一无所获!!
唯一对我有效的是:

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

    return;
});

**return;**正在注销手表,正在打破手表的循环。而且在打破循环后仍然工作正常。可以检测到阵列上的更改。

我的代码看起来像这样:

var watchFoo = $scope.$watchCollection('foo', function (newFoo, oldFoo) {
    
     if(condition) {
         // Do something interesting here ...      
          return;
     } else {
         // Do something else here ...
     }
     
    });

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

相关问题