2014-10-01 32 views
2

在我的代碼觀看,除了一個

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

這確保瞭如果在對象foo改變任何屬性,那麼這款手錶將被稱爲對象的所有元素我有一個手錶。我想對此做個例外。如果foo中的任何屬性發生變化(除了一個),我想調用此手錶。如果該屬性更改,則不應調用該手錶。這怎麼可能?

+0

你有沒有嘗試做它有條件在你的手錶內? – AnkitG 2014-10-01 15:02:12

回答

3

我能想到的兩種不同的方式來做到這一點:

選項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*/ 
       } 
);