【发布时间】:2013-02-20 14:24:02
【问题描述】:
免责声明:我试图对此做一个 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();
编辑 1: 我知道 ember-data 仅在以 (https://stackoverflow.com/a/15145803/84762) 开头嵌入的情况下才会序列化此数据,但我已覆盖我的序列化程序来处理此问题。我遇到的问题是商店甚至从未尝试保存此更改,因此我们甚至从未访问过序列化程序。
编辑2:我怀疑这可能与this bug有关,但同时这意味着这对任何人都不起作用,我有很难相信没有其他人遇到过这种情况。
【问题讨论】:
标签: javascript model-view-controller ember.js javascript-framework ember-data