假设我有两个模型:
App.Address = DS.Model.extend({
street: DS.attr('string'),
person: DS.belongsTo('App.Person')
})
App.Person = DS.Model.extend({
name: DS.attr('string'),
addresses: DS.hasMany('App.Address')
})现在我创建了一个人
App.person = App.Person.createRecord({name: 'Bill'});
App.store.commit();如果我尝试向这个人添加一个地址,如下所示
address = App.Address.createRecord({street: '123 Fake Street'});
App.person.get('addresses').pushObject(address);并提交事务
App.store.commit();新地址将被保存,但是person对象不会被识别为已更改;即使ids列表已从
{
...
"addresses": []
}至
{
...
"addresses": [3]
}有没有办法让ember-data知道我的person对象已经被更改并需要保存?
编辑:Here是一个说明问题的jsfiddle。
发布于 2012-10-14 14:02:57
到目前为止(ember-data revision 4)还没有办法做到这一点。由于对象具有外键,因此该对象仅在belongsTo端持久化,因此如果在关系的所属方中设置值,则它应该持久化。下一个版本的ember data应该会解决这个问题。
发布于 2013-01-24 20:28:07
我找到的解决方法是手动添加id,如下所示:
App.Address = DS.Model.extend({
street: DS.attr('string'),
personID: DS.attr('string'),
person: DS.belongsTo('App.Person')
})然后,当您发送数据时,设置personId字段,它将模仿person字段应该发送的内容。
发布于 2014-01-16 01:22:35
为此编写您自己的序列化程序如何,请参阅http://ember-website.thomasboyt.com/api/data/modules/data-serializer.html
https://stackoverflow.com/questions/11480252
复制相似问题