2014-10-03 87 views
0

我有這樣一個模型:EmberJS - 計算財產引用firstObject不更新

App.Conversation = DS.Model.extend({ 
    body    : DS.attr('string'), 
    created_at  : DS.attr('date'), 
    entry   : DS.hasMany('Entry', {async: true}), 
    user    : DS.belongsTo('User'), 
    allEntriesLoaded : DS.attr('boolean'), 
    entryProxyBody : function() { 
     return this.get('entry.firstObject.body'); 
    }.property('entry.firstObject.body') 
}); 

正如你可以看到它引用了其進入的hasMany relationsship在功能entryProxyBody。這個引用很好用,因爲調用entryProxyBody確實會從Entry中的第一個對象返回body-attribute。

但是,我的問題是,計算屬性沒有更新,當一個新的價值被添加到入門店。

我添加了一個新的記錄是這樣的:

App.NewController = Em.ObjectController.extend({ 
    actions: { 
     save: function() { 

      var entry = this.store.createRecord('entry', {body: 'Test', created_at: new Date() }); 

      this.store.find('conversation', this.parentController.get('id')).then(function(conversation) { 

       conversation.get('entry').pushObject(entry); 
       entry.save(); 
      }); 

     } 
    }, 
}); 

然而..如果我直接用灰燼督察在Chrome更新條目的第一個對象,然後計算屬性發生變化,因爲它應該。

我錯過了什麼?感謝您的幫助!

回答

0

我想你可能想要觀察entry數組中每個條目的變化。

entryProxyBody:function() { 
    return this.get('entry.firstObject.body'); 
}.property('[email protected]') 
+0

謝謝您的回答。可悲的是,這並沒有做到這一點,因爲當我將新對象推送到對話時,該屬性仍未更新。 – fischer 2014-10-04 06:50:47

+0

是的,它只會在您推入入口數組時更新。所以'get('entry')。pushObject ...'因爲我們正在監聽每個條目的更改 – 2014-10-05 21:42:35