为了在Ember.js中使用多态关系,需要配置适配器以识别多态模型的别名,如文档所示的这里。
DS.RESTAdapter.configure('App.Post', {
alias: 'post'
});不幸的是,这种方法不再适用于Ember Data1.0Beta,因为您不能再配置适配器。相反,你必须扩展它们。然而,简单地这样做是行不通的:
DS.ActiveModelAdapter.extend('App.Post', {
alias: 'post'
});它抛出错误:
Expected hash or Mixin instance, got [object String]Ember的部分转换指南详细介绍了适配器和序列化器的新方法。然而,我不知道如何将这些建议转化为类似于alias: 'post'的东西。指南详细介绍了如何处理有效载荷,但我不知道别名应该在哪个处理过程中适用。
发布于 2013-10-15 02:26:30
这在顶部已经过时,请参阅转换文档https://github.com/emberjs/data/blob/master/TRANSITION.md#polymorphic-relationships中的多态部分
多态关系
多态类型现在用模型名+ "Type“的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'
});成员对象的任何扩展的第一个参数都需要一个散列或混入,您将向它发送一个字符串。另外,它需要一个实际的类(它需要在您到达代码的这一部分之前定义)。
DS.ActiveModelAdapter.extend(App.Post, {
alias: 'post'
});https://stackoverflow.com/questions/19371465
复制相似问题