关联数组上的角度验证

时间:2014-10-14 22:32:15

标签: angularjs validation angularjs-ng-repeat

我有一个代表人和他们角色的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}}范围内。在这种情况下,我需要将页面上的所有验证合并到一个地方。

Here's a plunker

此外,是否有某种方法可以将我的人物指定元素转换为指令,其行为类似于具有单一名称的单个输入进行验证?

0 个答案:

没有答案