AngularJS - 验证表单

时间:2017-07-06 16:04:49

标签: angularjs twitter-bootstrap

我正在使用Angular 1.5.9

我有一个很大的形式,我分散在不同的Bootstrap手风琴中。

当表格中出现错误时,我希望能够更改我的手风琴班级以显示手风琴是错误的位置。

要检查整个表单中的错误,我可以检查

myFormName.$error

要检查元素的错误,我可以简单地执行

myFormName.myInputName.$error

但我不知道是否有办法同时为多个元素执行此操作,而无需单独检查每个元素。

我的第一个想法是改变输入的名称,如下所示:

<input name="accordion1.fieldName">

但这并没有给我预期的结果:我没有myFormName.accordion1。$ error,实际上,我甚至没有myFormName.accordion1.fieldName,因为我的数据实际存储在myFormName [' accordion1.fieldName']几乎没用。

有没有人找到这个问题的答案?我想我必须检查每个字段,有点难看,每当我们添加/删除字段时都要保持一团糟......

也许有一个指令可以为我做,但作为一个非英语母语人士,在这种情况下,我找不到用于搜索的关键词......

谢谢!

2 个答案:

答案 0 :(得分:2)

一种方法是嵌套ng-form directive

<form name=form1>
    <div ng-form=set1>
       <input name=input1 />
       <input name=input2 />
    </div>
</form>

{{form1.set1.$error}}

答案 1 :(得分:0)

您可以使用'accordion1_'等前缀命名字段,然后添加一个可以过滤字段的控制器函数。

ctrl.fieldGroup = function(form, fieldPrefix) {

    var fieldGroup = {};

    angular.forEach(form, function(value, key) {

        if (key.indexOf(prefix) === 0) {
            fieldGroup[key] = value;
        }

    });

    return fieldGroup;

}

然后ctrl.fieldGroup('accordion1')将返回一个包含相应字段的对象。您可以进一步扩展该函数,以将聚合$error属性添加到生成的fieldGroup对象。