我正在使用Angular 1.5.9
我有一个很大的形式,我分散在不同的Bootstrap手风琴中。
当表格中出现错误时,我希望能够更改我的手风琴班级以显示手风琴是错误的位置。
要检查整个表单中的错误,我可以检查
myFormName.$error
要检查元素的错误,我可以简单地执行
myFormName.myInputName.$error
但我不知道是否有办法同时为多个元素执行此操作,而无需单独检查每个元素。
我的第一个想法是改变输入的名称,如下所示:
<input name="accordion1.fieldName">
但这并没有给我预期的结果:我没有myFormName.accordion1。$ error,实际上,我甚至没有myFormName.accordion1.fieldName,因为我的数据实际存储在myFormName [' accordion1.fieldName']几乎没用。
有没有人找到这个问题的答案?我想我必须检查每个字段,有点难看,每当我们添加/删除字段时都要保持一团糟......
也许有一个指令可以为我做,但作为一个非英语母语人士,在这种情况下,我找不到用于搜索的关键词......
谢谢!
答案 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
对象。