AngularJS:$ scope。$ watch an object&仅返回其更改的属性

时间:2015-05-13 04:44:43

标签: javascript angularjs

我正在做一些简单的范围观看:

$scope.$watch('myObject', function(newValue, oldValue) {
    if (newValue !== oldValue) {
       return newValue;
    }
}, true);

其中myObject是具有多个属性的普通对象。我想只返回更改的属性,即,如果有一个属性被更改,如myObject.changedProperty,我想返回它。

然而,我想观看整个物体(所以,我不必为每个物业设置不同的手表)。如何才能做到这一点?

谢谢!

2 个答案:

答案 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);