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

对于RESTSerializerJsonSerializer,它遵循相同的模式

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 嵌入记录当前状态?的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式系统日志记录的简易方法

手把手,嘴对嘴,讲解UCOSII嵌入式操作系统的任务调度策略

嵌入式数据库搜集

嵌入式必会!C语言 最常用的贪心算法就这么被攻略了

Linux嵌入式驱动学习之路按键驱动

使用内存快照来加速嵌入式系统的启动