2017-07-06 123 views
0

的一部分,我采用了棱角分明1.5.9AngularJS - 验证表单

我有一个大表格,我至极散落通过不同的引导手风琴。

当表单中出现错误时,我希望能够更改我手风琴的类别以显示位于哪个位置的错误。

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

myFormName.$error 

,并检查错误的元素,我可以简单地做

myFormName.myInputName.$error 

但我不知道是否有是一种对多个元素一次执行此操作的方法,无需单独检查每个元素。

我首先想到的是像这样改变我的投入名称:

<input name="accordion1.fieldName"> 

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

有没有人找到这个问题的答案?我想我必须检查每个领域,这是一个有点丑陋,和一个混乱维持每当我们添加/删除领域...

也许有一个指令,那里可以做到这一点,但作为一个非英语母语的人,在这种情况下,我找不到最重要的关键词...

谢谢!

回答

2

一种方法是窝与ng-form directive

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

{{form1.set1.$error}} 
+0

这正是我需要的,谢谢! –

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')将返回一个对象与其上的appriopriate字段。您可以进一步扩展该功能,以将合计$error属性添加到生成的fieldGroup对象中。

+0

这就是我会去的,如果我没有更好的解决方案,但@ georgeawg的解决方案,我就不用在添加任何代码我控制器,所以我可能会去他的方法^^' –