Работа с перечислениями
Если у объекта есть свойство типа перечисление, то при задании его в модели требуется сделать следующее:
Определить трансформацию для конкретного типа (определить, каким образом клиент будет сериализовать и десериализовать соответствующие значения).
Для серверного типа, являющегося перечислением, 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 }; // Задание значений в виде объекта