我正在做一些简单的范围,例如:
$scope.$watch('myObject', function(newValue, oldValue) {
if (newValue !== oldValue) {
return newValue;
}
}, true);
其中myObject
是具有多个属性的普通对象。我只想返回更改的属性,即如果有更改的属性,例如myObject.changedProperty
,我只想返回。
但是我想观看整个对象(因此,我不必为每个属性设置不同的手表)。如何才能做到这一点?
谢谢!
$ watchCollection做您想要的。($ Rootscope.scope)
$watchCollection(obj, listener);
浅观看 任何属性都会发生变化时对象并发射(对于数组, 这意味着观看数组项目;对于对象地图,这意味着 观看属性)。如果检测到更改,听众 回电。
通过标准$手表操作观察到OBJ集合,IS 在每次拨打$ digest()的电话中检查是否有任何项目 添加,删除或移动。随时随地都会叫听众 在OBJ内发生了变化。示例包括添加,删除和 属于对象或数组的移动项目。
感谢大家的帮助。我最终做了这样的事情:
$scope.$watch('myObj', function(newValue, oldValue) {
for (var prop in myObj) {
if(newValue[prop] !== oldValue[prop]) {
return newValue[prop];
}
}
}, true);