Описаны основные особенности работы с перечислимыми типами в ember-flexberry-data.

Работа с перечислениями

Если у объекта есть свойство типа перечисление, то при задании его в модели требуется сделать следующее:

Определить трансформацию для конкретного типа (определить, каким образом клиент будет сериализовать и десериализовать соответствующие значения).

Для серверного типа, являющегося перечислением, NewPlatform.Someproject.Gender в папке transforms следует создать файл с именем new-platform-someproject-gender.js.

Создаваемый класс понаследовать от готового варианта задания перечислимого типа “enum-string”, а потом просто в свойстве “values” указать допустимые значения для перечислимого типа (можно задавать как с помощью массива, так и с помощью объекта).

import EnumTransform from 'ember-flexberry/transforms/enum-string';

export default EnumTransform.extend({
  values: ['Male', 'Female', 'Unknown'] // Допустимые значения для перечислимого типа.
});

enum-string и enum-number

В ember-flexbery-data доступны два базовых класса для перечислений.

  • enum-string - работает со значениями, которые передаются с сервера в виде строк.
  • enum-number - работает со значениями, которые передаются с сервера в виде чисел.

Например, если задавать допустимые значения любым из указанных ниже способов, то enum-string будет ожидать с сервера и отправлять на сервер значения ‘Пусто’, ‘Первая’, ‘Вторая’, а enum-number - числа 0, 1, 2 для задания в виде массива и 1, 2, 3 для задания в виде объекта (при этом интерпретируя их на клиенте как ‘Пусто’, ‘Первая’, ‘Вторая’).

['Пусто', 'Первая', 'Вторая']; // Задание значений в виде массива

{ Пусто: 1, Первая: 2, Вторая: 3 }; // Задание значений в виде объекта