【发布时间】:2014-10-01 14:53:50
【问题描述】:
我的代码中有一块手表
scope.$watch(foo, function () {
...
}, true);
这确保如果对象 foo 中的任何属性发生更改,则将调用此监视。我想对此例外。如果 foo 中的任何属性都发生了变化,我想调用这个手表。如果该属性发生更改,则不应调用此手表。这怎么可能?
【问题讨论】:
-
您是否尝试在手表内设置条件?
标签: angularjs
我的代码中有一块手表
scope.$watch(foo, function () {
...
}, true);
这确保如果对象 foo 中的任何属性发生更改,则将调用此监视。我想对此例外。如果 foo 中的任何属性都发生了变化,我想调用这个手表。如果该属性发生更改,则不应调用此手表。这怎么可能?
【问题讨论】:
标签: angularjs
我可以想到两种不同的方法来做到这一点:
选项 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*/
}
);
【讨论】: