Ember Data 1.0.0:复数如何运作?

时间:2013-09-01 17:41:32

标签: ember.js ember-data

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

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

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

通过魔术,似乎如果我通过“返回this.store.find('category');”进行查找,则JSON调用包含/ categories而不是/ categorys,尽管我还没有完全指定多个类别是类别......

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

THX

5 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:3)

如果关注的是避免仅在url中复制模型名称,则可以覆盖负责转换的pathForType函数。它不会影响复数函数,最后它是一种配置buildUrl进程的方法。

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

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

答案 3 :(得分:2)

似乎现在有一个默认的复数形式,用于特定的单词,如番茄等。

请参阅:https://github.com/emberjs/data/commit/9325a1dea594b8ff752886eb7a9d752785282e07

向David McMullin致谢!

答案 4 :(得分:2)

我可以使用Ember Data v1.0.0-beta.2来覆盖我的一个模型名称的自动复数。

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

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

我可以理解自动复数化是如何可行的,但恕我直言,我认为它浪费了宝贵的KB,特别是在移动设备上并不是完全必要的。