我有一个简单的Ember应用,其中有两个相互关联的模型:parent
和record
:
// parent model
export default DS.Model.extend({
records: DS.hasMany('records', { async: true })
});
// record model
export default DS.Model.extend({
parent: DS.belongsTo('parent')
});
记录路由嵌套在父路由下,父模板包含link-to
条记录和outlet
以呈现内容。记录模板包含简单的{{#each}}
循环。
以下是负责设置模型的记录索引路径:
// records index route
export default Ember.Route.extend({
model: function() {
return this.modelFor('parent').get('records');
}
});
当我加载parent/records
路由时,所有记录加载/渲染都很好。当我尝试创建新记录时,问题就出现了;我在记录索引控制器中做了什么:
// records index controller
export default Ember.ArrayController.extend({
needs: ['parent'],
actions: {
createRecord: function() {
var newRecord = this.store.createRecord('record', {
parent: this.get('controllers.parent.model')
});
newRecord.save();
}
}
});
创建新记录后,它不会出现在我的记录索引模板中。如果我打开Ember检查器,我可以看到那里的记录,它甚至分配了正确的父记录。
以下是我在创建记录后从服务器获得的答案:
{ "record": { "id": 1, "parent_id": 1 }}
我认为问题的发生是因为记录索引路由或来自服务器的响应;如果我改变这样的路线,新的记录会在创建后按预期显示(虽然这不是我想要的;我只想要属于父记录的记录):
// records index route
export default Ember.Route.extend({
model: function() {
return this.store.find('record');
}
});
我在Ember 1.6.1和Ember Data beta 8.任何想法可能出错?
答案 0 :(得分:0)
你是对的,你的索引路线会抓取一个模型数组 - 它不知道它们已被更新或删除。
有两种方法可以解决此问题:使用过滤器阵列或手动更新阵列。
以下是关于同一主题的问题链接: