AngularJS中枚举的最佳解决方案?

AngularJS中枚举的最佳解决方案?,angularjs,enums,Angularjs,Enums,我很难找到一个优雅的枚举解决方案,尤其是用AngularJS在枚举中搜索 让我描述一种情况以及我是如何处理它的:假设我有一个名为Event 此事件有两个属性:严重性和状态。这两个都是枚举,由ID(1、2、3)和标题(对于严重性:“轻度”、“正常”、“重要”和状态:“打开”、“关闭”、“待批准”)定义 来自服务的事件对象具有枚举的ID,当我想要显示对象时,我绑定到{{severityIdToTitle(Event.Severity)}} SeverityIDotitle是我的控制器上的一个方法,它

我很难找到一个优雅的枚举解决方案,尤其是用AngularJS在枚举中搜索

让我描述一种情况以及我是如何处理它的:假设我有一个名为
Event
此事件有两个属性:
严重性
状态
。这两个都是枚举,由ID(1、2、3)和标题(对于严重性:“轻度”、“正常”、“重要”和状态:“打开”、“关闭”、“待批准”)定义

来自服务的事件对象具有枚举的ID,当我想要显示对象时,我绑定到
{{severityIdToTitle(Event.Severity)}}
SeverityIDotitle是我的控制器上的一个方法,它调用我的服务上的一个方法,该方法根据收到的id返回枚举值 当我希望用户能够通过文本搜索对象时,问题就出现了,AngularJS过滤器不知道枚举的实际“字符串”值,因此我遇到了问题

我知道很多解决方法,也有一些选择,但我想知道什么是一个合法和干净的解决方案呢?我做的事情会让事情变得复杂吗?还有更好的方法吗


谢谢大家

有趣的问题。我将创建一个,而不是使用severityIdToTitle函数。过滤器设计用于格式化数据以呈现给用户,因此将id转换为字符串是一个很好的用例。筛选器应该依赖于知道枚举标识符及其值之间双向映射的服务。至于如何进行映射,这是一个普遍的JavaScript问题。关于这一点,有一个很好的线索。

如果没有更具体的
搜索用例,很难回答,看看服务是如何工作的等等。另外,既然你有解决办法的想法……应该提供这些想法。此站点上收到的帮助基于实时代码疑难解答。通过在plunker或jsfiddle.net中创建一个演示来获得更多帮助,该演示还提供了问题的概述。为什么不在Javascript中执行枚举,然后在Angular中使用它呢?我发现这个问题很有用。我实现了Duncan的解决方案。很好,我会使用显示标题的过滤器,但是当用户输入文本并且实际值是数字时,我如何通过用户输入过滤事件(比如我有一个ng重复列表)?你可以做一些类似于
ng repeat=items中的item | filter:(用户输入|事件|名称_to _id)
。换句话说,您可以嵌套过滤器。如果您使用您的起始示例创建一个Plnkr或JSFIDLE,我将很高兴使用它编写一个完整的解决方案。