Лучшее решение для Enums в AngularJS?

У меня возникли проблемы с поиском элегантного решения для Enums и особенно для поиска в Enums с помощью AngularJS.

Позвольте мне описать ситуацию и как я ее обработал: Скажем, у меня есть объект с именем Event Это событие имеет 2 свойства: Severity и Status. Оба из них являются перечислениями, определяемыми ID (1, 2,3) и заголовком (для серьезности: "свет", "нормальный", "важный" и для статуса: "открытые", "закрытые", "ожидающие утверждения" )

Объекты Event, которые поступают из Сервиса, имеют идентификатор Enums, и когда я хочу отобразить объект, который я связываю с {{ severityIdToTitle(Event.Severity) }} SeverityIdtoTitle - это метод моего контроллера, который вызывает метод в моей службе, который возвращает значение Enum на основе полученного идентификатора Проблема возникает, когда я хочу, чтобы пользователь мог искать объект по тексту, фильтр AngularJS не знает фактического "строкового" значения Enum, и поэтому я достигаю своей проблемы.

Я знаю много обходных решений вокруг этого и имею несколько вариантов, но мне интересно, какое было бы простое и чистое решение для этого? Что я делаю, усложняю вещи и там лучший способ?

Спасибо, ребята!

Ответ 1

Интересный вопрос. Я бы создал настраиваемый фильтр вместо использования функции severityIdToTitle. Фильтры предназначены для форматирования данных для представления пользователю, поэтому преобразование идентификатора в строку является хорошим вариантом для одного. Фильтр должен зависеть от службы, которая знает двустороннее сопоставление между идентификаторами перечисления и их значениями. Что касается того, как это сделать, это общий вопрос JavaScript. Существует одна хорошая тема об этом здесь.