我正在做一些简单的范围观看:
$scope.$watch('myObject', function(newValue, oldValue) {
if (newValue !== oldValue) {
return newValue;
}
}, true);
其中myObject
是具有多个属性的普通对象。我想只返回更改的属性,即,如果有一个属性被更改,如myObject.changedProperty
,我想返回它。
然而,我想观看整个物体(所以,我不必为每个物业设置不同的手表)。如何才能做到这一点?
谢谢!
答案 0 :(得分:2)
$ watchCollection做你想要的。 ($rootScope.Scope)
$watchCollection(obj, listener);
浅表的属性 任何属性更改时对象和触发(对于数组, 这意味着要观看数组项目;对于对象图,这意味着 看着这些房产)。如果检测到更改,则为侦听器 回调被解雇。
通过标准的$ watch操作观察obj集合 检查每次调用$ digest()以查看是否有任何项目 添加,删除或移动。无论什么时候都会调用监听器 在obj内已经改变了。示例包括添加,删除和 移动属于对象或数组的项目。
答案 1 :(得分:2)
感谢大家的帮助。我最终做了这样的事情:
$scope.$watch('myObj', function(newValue, oldValue) {
for (var prop in myObj) {
if(newValue[prop] !== oldValue[prop]) {
return newValue[prop];
}
}
}, true);