【问题标题】:Ember Data 1.0.0: How does pluralization works?Ember Data 1.0.0:多元化如何运作?
【发布时间】:2013-09-01 17:41:31
【问题描述】:

在 Ember 数据 0.13 中,复数定义如下:

DS.RESTAdapter.configure("plurals", {
 category: "categories"
});

Configure 不再存在,因此需要另一种方式来定义复数。

神奇的是,如果我通过“return this.store.find('category');”进行查找,则 JSON 调用包括 /categories 而不是 /categorys,尽管我根本没有指定category的复数是categories ...

Ember 数据如何确定这一点?有没有办法覆盖?

谢谢

【问题讨论】:

  • 我没有深入的了解,但我相信该功能包含在 ember-inflector 模块中(我被告知可以替换)。请参阅此提交:github.com/emberjs/data/commit/…
  • 谢谢。确实有一条规则将“y”转换为“ies”;因此类别成为 findAll 中的类别。不知道如何覆盖,但由于 Ember 数据自动复数,因此没有立即需要。

标签: ember.js ember-data


【解决方案1】:

我在 app.js 中使用以下内容:

var inflector = Ember.Inflector.inflector;
inflector.irregular("patient", "patients");

【讨论】:

  • 对于变形器对象没有可用的不规则函数(我使用的是beta2)
【解决方案2】:

我不确定如何实际导航到 REST 适配器文档,但我最近更新了 Pluralization Customization section 并使用以下示例:

Ember.Inflector.inflector.irregular('formula', 'formulae');
Ember.Inflector.inflector.uncountable('advice');

【讨论】:

  • 额外事实:在某一时刻,Ember 版本更改了 CamelCased 模型名称的规范名称... 示例:给定一个名为 App.SpecialFormula 的模型,在旧的 Ember 版本中,您必须将单复数对声明为 special_formula <-> yourchosenplural... 在较新的 Ember 版本中,您必须使用 specialFormula <-> yourchosenplural
【解决方案3】:

如果只想避免 url 中模型名称的复数形式,您可以覆盖负责转换的 pathForType 函数。它不影响复数功能,最后是配置buildUrl过程的一种方式。

            App.ApplicationAdapter = DS.RESTAdapter.extend({
            namespace: 'rest/api',

            pathForType: function(type) {
                return (type);
            }
        });

【讨论】:

    【解决方案4】:

    现在似乎有特定单词的默认复数形式,例如类别、番茄等。

    见:https://github.com/emberjs/data/commit/9325a1dea594b8ff752886eb7a9d752785282e07

    感谢大卫·麦克穆林!

    【讨论】:

      【解决方案5】:

      通过使用 Ember Data v1.0.0-beta.2,我能够覆盖我的一个模型名称的自动复数形式

      Ember.Inflector.inflector.rules.uncountable['dontpluralizemebro'] = true;
      

      只需将dontpluralizemebro 替换为您不想复数的单词即可。我把它放在我的 app.js 文件的顶部。显然,这是未记录的,并且可能会在未来的版本中随时更改。

      我可以理解自动复数是多么的好,但恕我直言,我认为它浪费了宝贵的知识库,尤其是在移动设备上,因为这不是完全必要的。

      【讨论】:

      • 对于 plurization,你可以这样做: Ember.Inflector.inflector.rules.irregular['[plurizeme'] = 'plurizemeeees';
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-21
      • 1970-01-01
      • 2012-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多