Ember-data 嵌入记录当前状态?
Posted
技术标签:
【中文标题】Ember-data 嵌入记录当前状态?【英文标题】:Ember-data embedded records current state? 【发布时间】:2014-08-05 00:35:39 【问题描述】:我真的被 Ember 数据引起的大量问题困住了,而且它缺乏嵌入式记录支持。
我搜索了整个网络,大多数帖子都过时了,其他帖子都过时了 + 需要我使用 3rd 方库或连接 300 行特殊代码,有很多缺点。
我不知道如何将嵌入记录与今天的 ember-data 一起使用?
编辑:现在有一个新文档http://emberjs.com/api/data/classes/DS.EmbeddedRecordsMixin.html
【问题讨论】:
【参考方案1】:使用ActiveModelSerializer
,您可以包含EmbeddedRecordsMixin
,它允许您使用嵌入的记录。 (在金丝雀版本,1.0 beta 9+,你也可以使用JsonSerializer
/RESTSerializer
)
序列化器
App.ColorSerializer = DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin,
attrs:
foos: embedded: 'always'
);
型号
App.Color = DS.Model.extend(
color: DS.attr(),
foos: DS.hasMany('foo')
);
App.Foo = DS.Model.extend(
name: DS.attr()
);
JSON
colors:[
id: 1,
color: "red",
foos:[
id:1,
name:'something 1'
,
id:2,
name:'something 2'
]
,
...
http://emberjs.jsbin.com/qagalabaso/1/edit
对于RESTSerializer
和JsonSerializer
,它遵循相同的模式
App.ColorSerializer = DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin,
attrs:
foos: embedded: 'always'
);
http://emberjs.jsbin.com/lesiwebobi/1/edit
【讨论】:
感谢@kingpin2k 没有你,90% 的 Ember 问题都将无法回答:),我是否必须为每个模型制作一个序列化器?或者我可以设置一些通用的全局嵌入式序列化器 这是一个很好的问题,我想你可以只做一个 ApplicationSerializer,然后列出嵌入在attrs
哈希中的所有类型。
太棒了!我认为 Ember 文档完全错过了所有嵌入的部分
我怎样才能使它与 FixtureAdapter 一起工作?似乎绕过了变压器和序列化器
是的,不幸的是,mixin 只适用于活动模型序列化程序,我相信它计划让其余序列化程序可用,但还没有发生。此外,您不能使用 pushPayload 侧载记录。真正唯一可行的用例是活动模型序列化器,以及来自服务器的数据(或模拟数据)以上是关于Ember-data 嵌入记录当前状态?的主要内容,如果未能解决你的问题,请参考以下文章