EmberJS - 引用firstObject的计算属性不会更新

时间:2014-10-03 22:04:01

标签: ember.js ember-data

我有一个这样的模型:

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')
});

正如您所看到的,它在函数entryProxyBody中引用了其Entry hasMany relationsship。这个引用非常有用,因为调用entryProxyBody确实会从Entry中的第一个对象返回body-attribute。

但是我的问题是,当一个新值被添加到Entry-store时,计算属性不会更新。

我添加了这样的新记录:

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中直接使用Ember Inspector更新Entry中的第一个对象,则计算属性会按原样更改。

我错过了什么?谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

我认为您可能希望观察条目数组中每个条目的更改。

entryProxyBody:function() {
    return this.get('entry.firstObject.body');
}.property('entry.@each.body')