循环中的输入验证不起作用

时间:2014-02-11 08:56:11

标签: angularjs validation angularjs-ng-repeat

使用AngularJS,我正在尝试从json动态构建表单。

小提琴:http://jsfiddle.net/586pB/2/

你可以在小提琴中看到:

  • 生成表格没问题
  • 自动停用提交按钮正常

但是,输入验证不起作用。

ng-class="{ 'has-error' : entryForm[field.id].$invalid && !entryForm[field.id].$pristine }"

当代码不在循环中时,此代码正在运行:entryForm.title.$invalid。但不是这种语法:entryForm[field.id].$invalid

感谢您的帮助。

编辑:已解决 在这里找到我的答案:https://github.com/angular/angular.js/issues/1404 每个表单组现在都是一个表单,每个输入都有一个静态名称。

2 个答案:

答案 0 :(得分:0)

如果要为表单中的所有输入字段添加错误样式(如果表单上的数据不正确),您可以执行下一步:

ng-class="{ 'has-error' : entryForm.$invalid}" 

而不是

ng-class="{ 'has-error' : entryForm[field.id].$invalid }"

我使用正确的验证和按钮禁用来更新您的jsfiddle。

<强>更新 JSFiddle

答案 1 :(得分:0)

在angularJS中,您的表单在ng-repeat之前被解析。

因此,您的所有表单输入控件都会使用名称'{{field.id}}'进行注册,而不是像标题或位置这样的原始值。这就是为什么错误类的条件没有验证的原因。

要解决此问题,您可以使用字段数据创建自定义指令。