2013-09-01 2 views
5

В Ember данных 0,13, плюрализация был определен как не следует:Ember Data 1.0.0: Как работает плюрализация?

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

Настройка больше не существует и, следовательно, там должно быть еще один способ определить множественном.

По волшебству кажется, что если я нахожусь через «return this.store.find ('category');», вызов JSON включает/категории, а не/категории, хотя я совсем не указал, что множественное число категорий - это категории ...

Как данные Ember могут определить это? Есть ли способ переопределить?

Thx

+0

У меня нет глубоких знаний, но я считаю, что функциональность содержится в модуле ember-inflector (который, как мне сказали, может быть заменен). См. Эту фиксацию: https://github.com/emberjs/data/commit/9325a1dea594b8ff752886eb7a9d752785282e07 –

+0

Thx. Существует действительно правило, которое преобразует «y» в «ies»; таким образом, категория становится категориями в findAll. Не видите, как переопределить, но не имеют непосредственной необходимости, поскольку данные Ember автоматически плюрализуются. – cyclomarc

ответ

6

Я использую следующие в app.js:

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

для объекта инфлектора нет нерегулярной функции (я пользуюсь бета2) –

+0

Якоб, см. Новый ответ, который я добавил. Он должен работать в бета-версии 2 – macinjosh

2

Я был в состоянии отменить автоматическую плюрализацию одного из моих имен модели, делая это с помощью Ember данных v1.0.0-beta.2

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

Просто замените dontpluralizemebro словом, которое вы не хотите, чтобы было множественным. Я помещал это в начало моего файла app.js. Очевидно, что это недокументировано и может измениться в любой момент в будущей версии.

Я могу понять, как автоматическая плюрализация может быть тонкой, но ИМХО. Я думаю, что она отбрасывает ценные КБ, особенно на мобильные, для чего-то, что совершенно не необходимо.

+0

Для плюризации вы можете сделать то же самое: Ember.Inflector.inflector.rules.irregular ['[плюризема] =' плюриземины '; –

5

Я не знаю, как на самом деле перейти к документации REST адаптера больше, но я недавно обновил Pluralization Customization section с этими примерами:

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

Бонусный факт: в какой-то момент версии Ember изменили канонические имена для имен моделей * CamelCased * ... Пример: для модели с именем 'App.SpecialFormula', в более старых версиях Ember вам нужно было объявить пары сингулярного множественного числа как' special_formula <-> yourchosenplural' ...в новых версиях Ember вы должны использовать 'specialFormula <-> yourchosenplural'. – Abdull

3

Если забота, чтобы избежать плюрализацию названия модели в url, вы можете переопределить функцию pathForType, которая отвечает за преобразование. Это не влияет на функцию плюрализации, и, наконец, это способ настройки процесса buildUrl.

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

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