Ember-data embedded zapisuje aktualny stan?

Naprawdę utknąłem z mnóstwem problemów spowodowanych przez Ember-data i brakuje w nim obsługi wbudowanych rekordów.

Przeszukałem całą sieć, większość postów jest nieaktualna inne są nieaktualne + wymaga ode mnie korzystania z bibliotek stron trzecich lub drukowania 300 linii specjalnego kodu z wieloma wadami.

Nie mam pojęcia jak używać wbudowanych rekordów z Ember-data w obecnym stanie?

Edit: {[8] } jest teraz nowa dokumentacja http://emberjs.com/api/data/classes/DS.EmbeddedRecordsMixin.html

Author: kfir124, 2014-06-14

1 answers

Za pomocą ActiveModelSerializer możesz dołączyć EmbeddedRecordsMixin, który pozwala na korzystanie z wbudowanych rekordów. (W wersji 1.0 beta 9 + można użyć JsonSerializer/RESTSerializer jak również)

Serializer

App.ColorSerializer = DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, {
  attrs: {
    foos: {embedded: 'always'}
  }
});

Modele

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

Dla RESTSerializer i JsonSerializer wynika to z tego samego wzoru

App.ColorSerializer = DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
  attrs: {
    foos: {embedded: 'always'}
  }
});

Http://emberjs.jsbin.com/lesiwebobi/1/edit

 31
Author: Kingpin2k,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-07 02:48:49