javascript - AngularJS $watch 函数重复调用 - 如何防止它

标签 javascript angularjs

在函数调用中,我需要检查数组元素的更改。 如果发生任何变化,我需要该函数继续执行,否则停止执行。

$scope.myFunction = function() {
    $scope.watchCollection('checkedCountry',function(newval,oldval) {
         if (newval!==oldval) {
               console.log("dothings");  // this is executing multiple times. 
         } 
    })
} 

但是对于 myFunction 的一次调用,我得到了多次 dothings 的输出。

我只需要它在函数调用和集合更改时工作一次。

最佳答案

根据您共享的代码,要设置的监视数量与调用函数 myFunction 的次数成正比。因此,每次调用 myFunction 时都会设置一个新的监视。因此,对集合的更改将触发所有监视。

通常, watch 是在某种类型的初始化函数中设置的,该函数仅被调用一次。

我建议将您的 watch 设置移至 myFunction 调用之外。

关于javascript - AngularJS $watch 函数重复调用 - 如何防止它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30069417/

相关文章:

javascript - AngularJS 将部分 Controller 移至服务

javascript - 运行 javascript 函数后无法识别 Css 格式

javascript - 使用 AngularJs 上传文件/图片

javascript - 使用 HTML5 FileWriter truncate() 方法?

javascript - 如何在 Angular Directive(指令)中使用 Controller 对象值?

javascript - 将输入类型=日期值传递给日期函数以获得特定格式

javascript - AngularJS Ng-Repeat - 多个自定义过滤器通过 JSON 对象属性过滤项目

javascript - 使用工厂的 Angular.JS API

javascript - 当元素以编程方式移动到鼠标下方时,不会触发 jQuery 悬停

javascript - 在 NodeJS 聊天应用程序中对齐消息