【问题标题】:Ember-data embedded records current state?Ember-data 嵌入记录当前状态?
【发布时间】:2014-08-05 00:35:39
【问题描述】:

我真的被 Ember 数据引起的大量问题困住了,而且它缺乏嵌入式记录支持。

我搜索了整个网络,大多数帖子都过时了,其他帖子都过时了 + 需要我使用 3rd 方库或连接 300 行特殊代码,有很多缺点。

我不知道如何将嵌入记录与今天的 ember-data 一起使用?

编辑:现在有一个新文档http://emberjs.com/api/data/classes/DS.EmbeddedRecordsMixin.html

【问题讨论】:

    标签: ember.js ember-data


    【解决方案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 侧载记录。真正唯一可行的用例是活动模型序列化器,以及来自服务器的数据(或模拟数据)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2014-05-06
    相关资源
    最近更新 更多