首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ember.js数据关联未保存

Ember.js数据关联未保存
EN

Stack Overflow用户
提问于 2012-07-14 09:24:27
回答 3查看 1K关注 0票数 7

假设我有两个模型:

代码语言:javascript
复制
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')
})

现在我创建了一个人

代码语言:javascript
复制
App.person = App.Person.createRecord({name: 'Bill'});
App.store.commit();

如果我尝试向这个人添加一个地址,如下所示

代码语言:javascript
复制
address = App.Address.createRecord({street: '123 Fake Street'});
App.person.get('addresses').pushObject(address);

并提交事务

代码语言:javascript
复制
App.store.commit();

新地址将被保存,但是person对象不会被识别为已更改;即使ids列表已从

代码语言:javascript
复制
{
  ...
  "addresses": []
}

代码语言:javascript
复制
{
  ...
  "addresses": [3]
}

有没有办法让ember-data知道我的person对象已经被更改并需要保存?

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

EN

回答 3

Stack Overflow用户

发布于 2012-10-14 14:02:57

到目前为止(ember-data revision 4)还没有办法做到这一点。由于对象具有外键,因此该对象仅在belongsTo端持久化,因此如果在关系的所属方中设置值,则它应该持久化。下一个版本的ember data应该会解决这个问题。

票数 1
EN

Stack Overflow用户

发布于 2013-01-24 20:28:07

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

代码语言:javascript
复制
App.Address = DS.Model.extend({
   street: DS.attr('string'),
   personID: DS.attr('string'),
   person: DS.belongsTo('App.Person')
})

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

票数 1
EN

Stack Overflow用户

发布于 2014-01-16 01:22:35

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11480252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档