【问题标题】:Watch all elements of an object except one观察一个对象的所有元素,除了一个
【发布时间】:2014-10-01 14:53:50
【问题描述】:

我的代码中有一块手表

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

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

【问题讨论】:

  • 您是否尝试在手表内设置条件?

标签: angularjs


【解决方案1】:

我可以想到两种不同的方法来做到这一点:

选项 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*/
                 }
 );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多