在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)
似乎有什么问题?提前感谢您的帮助。
答案 0 :(得分:2)
由于store.find()
方法返回了承诺,因此当您在其上调用get('entry')
时,它尚未解决。
尝试这样,首先解析承诺然后调用get('entry')
:
this.store.find('conversation', 102498).then(function(conversation){
conversation.get('entry').createRecord(entry);
});
这应该有效,希望有所帮助。