首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Ember-Data 1.0Beta设置多态别名

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

Stack Overflow用户
提问于 2013-10-15 00:32:17
回答 1查看 587关注 0票数 1

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

代码语言:javascript
复制
DS.RESTAdapter.configure('App.Post', {
  alias: 'post'
});

不幸的是,这种方法不再适用于Ember Data1.0Beta,因为您不能再配置适配器。相反,你必须扩展它们。然而,简单地这样做是行不通的:

代码语言:javascript
复制
DS.ActiveModelAdapter.extend('App.Post', {
  alias: 'post'
});

它抛出错误:

代码语言:javascript
复制
Expected hash or Mixin instance, got [object String]

Ember的部分转换指南详细介绍了适配器和序列化器的新方法。然而,我不知道如何将这些建议转化为类似于alias: 'post'的东西。指南详细介绍了如何处理有效载荷,但我不知道别名应该在哪个处理过程中适用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-15 02:26:30

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

多态关系

多态类型现在用模型名+ "Type“的json键序列化

例如,考虑到多态关系:

代码语言:javascript
复制
 App.Comment = DS.Model.extend({
   message: DS.belongsTo('message', {
     polymorphic: true
   })
 });

成员数据0.13

代码语言:javascript
复制
 {
   "message": 12,
   "message_type": "post"
 }

成员数据1.0.beta.3:

代码语言:javascript
复制
 {
   "message": 12,
   "messageType": "post"
 }

另外,如果你再一次看到这个错误,它就是在抱怨

代码语言:javascript
复制
 DS.ActiveModelAdapter.extend('App.Post', {
   alias: 'post'
 });

成员对象的任何扩展的第一个参数都需要一个散列或混入,您将向它发送一个字符串。另外,它需要一个实际的类(它需要在您到达代码的这一部分之前定义)。

代码语言:javascript
复制
 DS.ActiveModelAdapter.extend(App.Post, {
   alias: 'post'
 });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19371465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档