如何在父模型中添加新的许多关系
How to add a new many relationship to parent model?
免责声明:我试图做一个jsfiddle,但没有RESTAdapter的公共源代码,我不能真正使它工作。
我有一个具有hasMany子模型数组的模型。我需要添加一个新模型到这个子数组并保存到服务器:
App.FooModel = DS.Model.extend({
'name': DS.attr('string'),
'bars': DS.hasMany('App.BarModel')
});
App.BarModel = DS.Model.extend({
'name': DS.attr('string'),
});
App.ApplicationController = Ember.Controller.extend({
init: function() {
var foo = App.FooModel.find(101); // -- currently has bars[201, 202, 203]
var newBar = loadFixture( App.BarModel, 204 );
var self = this;
setTimeout( function() { // -- just to be sure our models are loaded before we try this
// foo.currentState: saved
foo.get('bars').addObject(newBar);
// foo.currentState: saved
foo.store.commit(); // -- nothing happens
}, 1000);
}
});
App = Ember.Application.create({
store: DS.Store.create({
revision: 11
})
});
但是什么也没发生。我的父模型没有被标记为脏模型,因此存储永远不会尝试提交。我应该用别的方式把这个关系添加到父节点上吗?这是臭虫吗?
当前处理:
foo.get('bars').addObject(newBar);
var save = foo.get('name');
foo.set('name', (save + '!'));
foo.set('name', save); // -- this marks our record as dirty, so a save will actually happen
foo.store.commit();
Edit 1:我知道ember-data只会序列化这个数据,如果它开始嵌入(https://stackoverflow.com/a/15145803/84762),但是我已经覆盖了我的序列化器来处理这个问题。我遇到的问题是,存储甚至从来没有尝试保存这个更改,所以我们甚至从来没有到达序列化器。
编辑2:我怀疑这个可能与这个bug有关,但同时这也意味着这对任何人都不起作用,我很难相信没有人遇到过这种情况,
看起来您正在建模一对多的关系,但您没有在App.BarModel
上包含belongsTo
选项。查看此链接:
http://emberjs.com/guides/models/defining-models/toc_one-to-many
App.Post = DS.Model.extend({
comments: DS.hasMany('App.Comment')
});
App.Comment = DS.Model.extend({
post: DS.belongsTo('App.Post')
});
据我所知,您没有使用embedded
的关系特性,而是覆盖了您的序列化器来处理bars
对象到foo
对象的序列化。
我认为你的错误可能来自这里:如果你的关系没有嵌入,没有理由把foo
对象标记为脏的,因为当你添加一个对象到他的bars
关联时,应该改变的通常是你添加的bar
对象的关键foo_id
,那么foo
对象就没有变化发送到API。
相关文章:
- 气质的“nestRemoting()”有时可以'找不到关系
- 如何在Parse中创建一对多关系
- 为什么在许多浏览器中drawImage()的性能略好于createPattern()
- Ext.js从json构建模型关系的问题
- JSDoc:模块和名称空间之间的关系是什么
- 单元测试依赖关系没有被嘲笑
- 在Nodejs中为许多用户处理计时器
- FRP 中 EventStreams 的循环依赖关系
- 有许多关系创建记录 - 为什么未定义
- Ember js - 更新其他表后,有许多关系中断
- 余烬.js有许多模型关系保存
- 对于具有一对多关系的主干模型,存储“;许多“;数组中的模型,而不是Collection
- Ember排序有许多关系
- 余烬装置和有许多关系
- 序列自引用有许多关系
- Ember.js如何扁平化async的许多关系
- 如何在父模型中添加新的许多关系
- Ember数据有许多关系空结果
- 在车把模板中显示具有许多余烬关系的第一项
- 如何在javascript中动态创建具有许多父级和子级关系的Json