我有一个代表人和他们角色的javascript对象。角色是表示枚举的字符串。
以下是一个例子:
{
"532":"Customer",
"545":"Employee",
"335":"Manager"
}
要控制角色分配,我有以下标记:
<div ng-repeat="(personId, role) in people">
{{personId}}
<select ng-model="people[personId]">
<option ng-repeat="role in roles" value="{{role}}"
ng-selected="role === people[personId]">
{{role}}
</option>
</select>
</div>
现在,我需要验证角色分配,以便只有一名员工,一名员工和一名经理。
我在其他地方有一个<div>
来整合所有验证消息。
我通过UI.Utils
向<select>
添加了一些自定义验证,如此ui-validate="{hasEmployee: 'hasEmployee($value)', hasManager : 'hasManager($value)' }"
。
我将<select>
与ng-form
<div ng-form="personDesignation">
包裹起来<div>
<div ng-show="myForm.personDesignation.$error.hasEmployee">
A solution must have exactly one employee
</div>
<div ng-show="myForm.personDesignation.$error.hasManager">
A solution must have exactly one manager
</div>
</div>
我添加了一些验证消息,如此
ng-form
问题是验证仅适用于重复中的最后一个选择。更改除最后一个选择之外的所有选项都不做任何事情。这是有道理的,但我不知道该做什么,以便我的验证角色进入我的父表单。我之前在ng-repeat
内使用了ng-repeat
,但在这些情况下,我的验证也在{{1}}范围内。在这种情况下,我需要将页面上的所有验证合并到一个地方。
此外,是否有某种方法可以将我的人物指定元素转换为指令,其行为类似于具有单一名称的单个输入进行验证?