Ember-data嵌入记录当前状态?

时间:2014-06-14 17:25:24

标签: ember.js ember-data

我真的遇到了由Ember数据引起的大量问题,并且缺乏嵌入式记录支持。

我搜索了整个网络,大部分帖子已经过时,其他帖子已过时+要求我使用第三方库或连接300行特殊代码,但有很多缺点。

我不知道如何使用嵌入式记录和今天的ember-data?

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

1 个答案:

答案 0 :(得分:31)

使用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