2016-11-15 80 views
0

我使用下面的代碼獲取其屬性的改變物體的細節得到一個數組的改變的對象。如何使用燼時oberver

getChangedObject:function(){ 
    console.log('changed name is' , can i get the object here); 
}.observes('[email protected]') 

在此先感謝。

+1

我猜。它現在不可能。 – kumkanillam

+0

您確定我們沒有模型中的任何屬性,我們可以知道它已更改? –

+0

要獲得changedAttributes特別是模型,你可以參考[changedAttributes API](http://emberjs.com/api/data/classes/DS.Model.html#method_changedAttributes)。但是你的問題是不同的,也就是說,從對象數組中,哪個特定對象的'rollNo'改變導致這個觀察者觸發,這是不可能單獨獲得特定改變的對象的(我猜)。 – kumkanillam

回答

0

內觀察者,你不能讓這引起觀察者觸發確切的對象,但你可以試試下面的方法,比如迭代模型的排列並觀看單獨更改的屬性。

getChangedObject: function() { 
     let model = this.get('model'); 
     model.forEach(function(item, index) { 
      var changedAttributes = item.changedAttributes(); 
      item.eachAttribute(function(item, meta) { 
       var temp = changedAttributes[item]; 
       if(temp){ 
       console.log(' old value ',temp[0],' new value ',temp[1]); 
       } 
      }); 
     }) 
    }.observes('[email protected]') 
+0

正如每指令在[這裏](http://emberjs.com/api/data/classes/DS.Model.html#method_changedAttributes),'changedAttributes()',直到記錄被保存給出改變的屬性。這並不能解決我的問題。 –

+0

如果模型在本地創建但尚未保存,那麼你不會得到改變的屬性,但對於已保存或已經加載的記錄,你將得到....,如果它不適合你,那麼可能是你可以嘗試保存對象的早期狀態並自己與當前狀態進行比較,最初可能會考慮編寫該對象。 – kumkanillam