我无法找到优雅的Enums解决方案,特别是在使用AngularJS的Enums中搜索。
让我描述一下情况以及我是如何处理的:假设我有一个名为Event
的对象
此活动有2个属性:Severity
和Status
。两者都是Enums,由ID(1,2,3)和Title(严重性:“Light”,“Normal”,“Important”和Status:“Open”,“Closed”,“Pending Approval”)定义
来自服务的Event对象具有Enums的ID,当我想显示我与{{ severityIdToTitle(Event.Severity) }}
绑定的对象时
SeverityIdtoTitle是我的控制器上的一个方法,它调用我的服务上的方法,该方法根据收到的id返回Enum的值
当我希望用户能够通过文本搜索对象时,会出现问题,AngularJS过滤器不知道Enum的实际“字符串”值,因此我遇到了问题。
我知道很多关于这方面的解决方法,并且有一些选择,但我想知道什么是优雅和干净的解决方案呢?我做了什么让事情变得复杂,有更好的方法吗?
谢谢你们!
答案 0 :(得分:5)
有趣的问题。我会创建一个custom filter而不是使用severityIdToTitle函数。过滤器用于格式化数据以呈现给用户,因此将id转换为字符串是一个很好的用例。过滤器应该依赖于知道枚举标识符与其值之间的双向映射的服务。至于如何进行映射,这是一个普遍的JavaScript问题。关于这个here有一个很好的主题。