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

时间:2015-05-06 06:45:23

标签: javascript angularjs

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

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

但是对于myFunction的单次调用我会得到多次输出。

我需要它只为函数调用工作一次,如果集合发生变化。

1 个答案:

答案 0 :(得分:2)

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

通常情况下,手表会在某种类型的初始化函数中设置,只能调用一次。

我建议您在myFunction电话之外移动手表设置。