Ember.js数据关联不保存

假设我有两个模型:

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();

新地址将被保存,但是人物不会被识别为已更改; 即使ID的列表已经从

{
  ...
  "addresses": []
}

{
  ...
  "addresses": [3]
}

有没有办法让ember-data知道我的person对象已经改变了,需要保存吗?

编辑:这是一个说明问题的jsfiddle。


截至目前(ember-data revision 4),没有办法做到这一点。 由于对象具有外键,因此该对象只保留在belongsTo方面,所以如果您在关系的属于边设置该值,它应该保留。 下一个版本的数据应该解决这个问题。


我找到的解决方法是手动添加id:

App.Address = DS.Model.extend({
   street: DS.attr('string'),
   personID: DS.attr('string'),
   person: DS.belongsTo('App.Person')
})

那么当你发送你的数据时,设置personId字段,它会模仿人物字段应该发送的内容。


如何编写自己的序列化程序,请参阅http://ember-website.thomasboyt.com/api/data/modules/data-serializer.html

链接地址: http://www.djcxy.com/p/10991.html

上一篇: Ember.js data associations not saving

下一篇: Deploying Haskell web application to low