如何序列化具有 ember-data > beta15 的 hasMany 关系?

How can I serialize hasMany relations with ember-data > beta15?

直到 ember-beta 14,一切都很顺利。 我有 goalaccount 个模型。

目标hasMany('account'),但帐户没有或不属于目标(不在ember,我的应用程序上没有原因。

使用自定义序列化程序,我一切正常:

//serializers/goal.js

    import DS from 'ember-data';

    export default DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, {
      attrs: {
        account: { serialize: 'ids' }
      }
    });

我的 post 请求满足了我的所有需求:

...
  account_ids: [1, 2, 3]
...

现在我只有 account_ids: []。 Ember 现在关于我的序列化程序,否则我只会 accounts,而不是 account_ids 请求。

我尝试了 docs 中所有可能的组合,有和没有 {async: true},等等,没有任何效果。

我做错了什么?

我觉得它与新的 snapshots api 有关,但找不到任何关于如何使用它的线索。

谢谢!

我遇到了同样的问题,但最终解决了这个问题:

Models/foo.js:

var foo = DS.Model.extend({
...,
...,
...,
bars: DS.hasMany('bar', {async: true})
});
export default foo;

Models/bar.js:

var bar = DS.Model.extend({
...,
Foos: DS.hasMany('foo', {async: true})
});

export default bar;

Serializer/foo.js:

import DS from 'ember-data';
export default DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin,{
  attrs: {  
    Bars: {
     embedded: 'always'
    }
  }
});

Serializer/bar.js:

import DS from 'ember-data';
export default DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin,{
  attrs: {    
    Foos: {
          embedded: 'always'
        }
   }
});

希望对你有所帮助。

感谢天使的帮助VB。

但我想出了另一个解决方案,这似乎是问题的根源。

ember-data beta.14 之前,您需要将 select 绑定到 value.content。 Ant 它适用于 singlemultiple select.

{{view 'select'
content=myDropdownContent
value=model.myProperty.content
}}

{{view 'select'
content=myDropdownContent
value=model.myProperty.content
multiple='multiple'
}}

beta-15 开始,如果您绑定到 content 它似乎可以工作,在 Ember Inspector 上您会看到您的数据发生变化,但 它没有序列化.

解决方案非常简单,只需遵循 Ember 文档...

{{view 'select'
content=myDropdownContent
value=model.myProperty
}}

{{view 'select'
content=myDropdownContent
selection=model.myProperty
multiple='multiple'
}}

现在,使用相同的序列化器,它可以工作了!全部为后端序列化。