Ember.js数据关联未保存

Ember.js数据关联未保存,ember.js,ember-data,Ember.js,Ember Data,假设我有两种型号: 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.c

假设我有两种型号:

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对象识别为已更改; 即使ID列表已从

{
  ...
  "addresses": []
}

有没有办法让余烬数据知道我的person对象已更改,它需要 被拯救

编辑:
是一个JSFIDLE说明了这个问题。

到目前为止(余烬数据修订版4),没有办法做到这一点。由于对象具有外键,因此仅在belongsTo侧保留该对象,因此如果在关系的belongsTo侧设置该值,则该对象应保持不变。余烬数据的下一个版本应该解决这个问题。

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

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

然后,当您发送数据时,设置personId字段,它将模拟person字段应该发送的内容

为此编写您自己的序列化程序怎么样,请参见

我不介意错误在哪里,因为console会显示预期的结果。。。您的问题有最新情况吗?也许你在哪里使用旧的余烬数据修订版?你还在遇到这个问题吗?
App.Address = DS.Model.extend({
   street: DS.attr('string'),
   personID: DS.attr('string'),
   person: DS.belongsTo('App.Person')
})