在函数调用中,我需要检查数组元素的更改。 如果发生任何变化,我需要该函数继续执行,否则停止执行。
$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/