Emberjs - 尝试从控制器访问模型:返回undefined

时间:2014-10-01 20:28:50

标签: ember.js

在EmberJS中,我的模型定义如下:

App.Conversation = DS.Model.extend({
    body            : DS.attr('string'),
    created_at      : DS.attr('date'),
    entry           : DS.hasMany('Entry')
});

App.Entry = DS.Model.extend({
    body    : DS.attr(),
    conversation: DS.belongsTo('Conversation'),
    created_at : DS.attr('date'),    
});

我的Conversations控制器是这样的:

App.ConversationsController = Em.ArrayController.extend({    
    actions: {
        event: function() {     
            var entry = this.store.createRecord('entry', {
                body: 'test test'
            });

            this.store.find('conversation', 102498).get('entry').createRecord(entry);
        },
    }
});

但是当我尝试保存新的Entry模型时,我得到一个“Uncaught TypeError:无法读取属性'createRecord'的undefined”。

ID 102498的对话确实存在,因为如果我尝试这样做就会返回:

this.store.find('conversation', 102498)

似乎有什么问题?提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

由于store.find()方法返回了承诺,因此当您在其上调用get('entry')时,它尚未解决。

尝试这样,首先解析承诺然后调用get('entry')

this.store.find('conversation', 102498).then(function(conversation){
 conversation.get('entry').createRecord(entry);
});

这应该有效,希望有所帮助。