在AngularJS中,我有一个监视作用域变量的指令。当变量包含某些数据时,我需要稍微修改该变量。问题是,当我更改变量时,我的$watch再次被触发。所以我最终成了一个连续的循环。
scope.$watch('someVar', function(newValue, oldValue) {
console.log(newValue);
scope.someVar = [Do something with someVar];
});这再次触发$watch,这是有道理的。但我确实需要一种改变观察变量的方法。有办法这样做吗?
发布于 2014-08-15 07:41:55
这就是肮脏检查的工作原理。每当$scope上的某物发生变化时,角度就会通过附加到范围的所有东西来旋转,并且它会一直这样做,直到没有更多的变化。
如果您想这样做,您必须确保您的$watch函数是幂等的。您必须同时查看newValue和oldValue,并确定您是否已经在这个$digest循环中将这些更改应用于您的变量。如何做到这一点在一定程度上取决于您对someVar所做的更改。
一般来说,在手表函数中改变一个观察变量并不是一个好主意.
https://stackoverflow.com/questions/25322780
复制相似问题