使用Ember-Data 1.0Beta设置多态别名

时间:2013-10-15 00:32:18

标签: ember.js

为了在Ember.js中使用多态关系,您需要配置适配器以识别多态模型的别名,如文档here所述:

DS.RESTAdapter.configure('App.Post', {
  alias: 'post'
});

不幸的是,这种方法不再适用于Ember Data 1.0Beta,因为您无法再配置适配器。相反,你必须扩展它们。但是,这样做并不起作用:

DS.ActiveModelAdapter.extend('App.Post', {
  alias: 'post'
});

它抛出错误:

Expected hash or Mixin instance, got [object String]

这个section的Ember-Data过渡指南详细介绍了适配器和序列化器的新方法。但是,我不确定如何为alias: 'post'之类的内容翻译这些建议。该指南详细介绍了如何处理有效负载,但我不知道别名在哪里适合处理。

1 个答案:

答案 0 :(得分:1)

在顶部已过时,请参阅转换文档中的多态性部分https://github.com/emberjs/data/blob/master/TRANSITION.md#polymorphic-relationships

多态关系

现在使用型号名称+“Type”

的json键序列化多态类型

例如,给定多态关系:

 App.Comment = DS.Model.extend({
   message: DS.belongsTo('message', {
     polymorphic: true
   })
 });

Ember Data 0.13

 {
   "message": 12,
   "message_type": "post"
 }

Ember Data 1.0.beta.3:

 {
   "message": 12,
   "messageType": "post"
 }

另一方面,如果您再次看到该错误,则会抱怨此

 DS.ActiveModelAdapter.extend('App.Post', {
   alias: 'post'
 });

ember对象的任何扩展的第一个参数都需要hash或mixin,并且你要发送一个字符串。 Aka它想要一个实际的类(它需要在你到达这部分代码之前定义)。

 DS.ActiveModelAdapter.extend(App.Post, {
   alias: 'post'
 });