Ember-данные встроенные записи текущего состояния?

Я действительно застрял с множеством проблем, вызванных Ember-данными, и в нем отсутствует поддержка встроенных записей.

Я искал всю сеть, большинство постов устарели, другие устарели + требует от меня использования сторонних библиотек или подключения 300 строк специального кода с множеством недостатков.

Я понятия не имею, как использовать встроенные записи с ember-данными, как они есть сегодня?

редактировать: теперь есть новая документация http://emberjs.com/api/data/classes/DS.EmbeddedRecordsMixin.html

1 ответ

Решение

С использованием ActiveModelSerializer Вы можете включить EmbeddedRecordsMixin что позволяет использовать встроенные записи. (В канарских версиях 1.0 beta 9+ вы можете использовать JsonSerializer/RESTSerializer также)

Serializer

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

Другие вопросы по тегам