我将 Ember Data (1.0.0-beta.7) 与 DS.RESTAdapter 和西类牙语 API 一起使用。我有一个模型调用 App.ModuloPerfil 表示三元多对多关系:

App.Perfil = DS.Model.extend({
  nombre: DS.attr(),
  tipo: DS.attr(),
  modulosPerfiles: DS.hasMany('moduloPerfil', { async: true })
});

App.Modulo = DS.Model.extend({
  nombre: DS.attr(),
  alias: DS.attr(),
  tipo: DS.attr(),
  modulosPerfiles: DS.hasMany('moduloPerfil', { async: true })
});

App.ModuloPerfil = DS.Model.extend({
  enabled: DS.attr(),
  perfil: DS.belongsTo('perfil', { async: true }),
  modulo: DS.belongsTo('modulo', { async: true })
});

我定义了一些变形规则来处理西类牙语复数:
Ember.Inflector.inflector.irregular('perfil', 'perfiles');
Ember.Inflector.inflector.irregular('moduloPerfil', 'modulosPerfiles');

当我向 /api/perfil/1 发出 API 请求时,我得到以下响应:
{"perfil": {id: 1, nombre: "Perfil investigador", tipo: "Investigador", modulosPerfiles: [1,2]}}

到目前为止似乎一切正常,但是当我检查从客户端对 API 进行的调用时,我发现当它尝试检索 de moduloPerfil 元素时,url 是:
GET /api/moduloPerfils?ids[]=1&ids[]=2

它使用“moduloPerfils”,即英语复数,而不是屈折符中定义的不规则规则。

我试过 Ember.Inflector.inflector.irregular('modulo-perfil', 'modulos-perfiles') 但我也不起作用。

不规则规则必须如何定义?

最佳答案

经过一些更多的测试,我发现了错误。这不是规则问题,问题是 Ember.Inflector 规则 必须在 Ember.Application.create 之前声明

我在做:

var App = Ember.Application.create();

Ember.Inflector.inflector.irregular('perfil', 'perfiles');
Ember.Inflector.inflector.irregular('moduloPerfil', 'modulosPerfiles');

正确的顺序是:
Ember.Inflector.inflector.irregular('perfil', 'perfiles');
Ember.Inflector.inflector.irregular('moduloPerfil', 'modulosPerfiles');

var App = Ember.Application.create();

对不起,这是一个愚蠢的错误。

已修复: 最后,这不是错误,代码是正确的。规则可以在 App 创建之前或之后声明。原始代码没有错误,所以问题可能是我没有看到的另一件事。

关于ember.js - Ember 屈折符和西类牙语复数形式,带有两个词的名字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23570894/

10-12 12:20
查看更多