1

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

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]

Ember-Data 转换指南的这一部分详细介绍了适配器和序列化程序的新方法。但是,我不确定如何将该建议翻译成类似alias: 'post'的内容。该指南详细介绍了如何处理有效负载,但我不知道别名应该在哪里适合该处理。

4

1 回答 1

1

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

多态关系

多态类型现在使用模型名称 +“类型”的 json 键进行序列化

例如给定多态关系:

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

余烬数据 0.13

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

灰烬数据 1.0.beta.3:

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

另一方面,如果您再次看到该错误,它会抱怨这个

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

ember 对象的任何扩展的第一个参数都需要一个散列或混合,并且您正在向它发送一个字符串。也就是它想要一个实际的类(在你进入这部分代码之前,它需要被定义)。

 DS.ActiveModelAdapter.extend(App.Post, {
   alias: 'post'
 });
于 2013-10-15T02:26:30.417 回答