2012-07-14 52 views
7

Ember.js数据协会比方说,我有2种型号:不节能

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] 
} 

有没有办法让烬数据知道,我的个人目标已经改变,它需要 可以得救?

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

+2

我不介意错误所在,如控制台显示预期的结果...任何最新状态关于您的问题?也许你在哪里使用旧的烬数据修订?你还在遇到这个问题吗? – 2012-07-19 09:29:05

回答

1

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

1

左右,我发现这样做的工作是只手动添加的ID,如:

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

那么当你把你的数据,将PERSONID领域,它会模仿什么人场似乎应该发送。