Angularjs 观察对象的所有元素,只有一个除外

Angularjs 观察对象的所有元素,只有一个除外,angularjs,Angularjs,我的密码里有一块手表 scope.$watch(foo, function () { ... }, true); 这确保了如果对象foo中的任何属性发生更改,那么将调用此监视。我想破例。如果foo中除了一个属性以外的任何属性发生了变化,我想称这个手表为watch。如果该属性发生更改,则不应调用此手表。这怎么可能呢?我可以想出两种不同的方法: 选项1,只需在$watch功能开始时处理它: scope.$watch(foo, function (newVal, oldVal) { if

我的密码里有一块手表

scope.$watch(foo, function () {
   ...
}, true);

这确保了如果对象foo中的任何属性发生更改,那么将调用此监视。我想破例。如果foo中除了一个属性以外的任何属性发生了变化,我想称这个手表为watch。如果该属性发生更改,则不应调用此手表。这怎么可能呢?

我可以想出两种不同的方法:

选项1,只需在
$watch
功能开始时处理它:

scope.$watch(foo, function (newVal, oldVal) {
   if(newVal.propertyThatYouDontWantToWatch === oldVal.propertyThatYouDontWantToWatch)
        return;
   /* Normal Code here*/
}, true);
选项2,定义您不希望这样监视的属性(我很确定此选项不会触发
foo
对象的
$watch
):


你试过把它放在手表里吗?
 Object.defineProperty(
                foo, 
                'propertyThatYouDontWantToWatch', 
                {
                    enumerable:false, 
                    configurable:true, 
                    writable: true, 
                    value:{} /*Replace {} with the value that you want to assign to your property*/
                 }
 );