为了在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'
之类的内容翻译这些建议。该指南详细介绍了如何处理有效负载,但我不知道别名在哪里适合处理。
答案 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'
});