AngularJS:$scope.$watch一个对象,只返回其更改的属性



我正在做一些简单的范围,例如:

$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);

最新更新