如何为表单验证动态设置元素名称?

时间:2015-04-16 10:29:31

标签: angularjs

我有一个带有ng-repeat生成的输入字段的表单。字段名称是从模型动态设置的。我无法通过验证工作。 这是在ng-repeat中重复的输入字段:

<input class="form-control input" type="number" id="item.id" name="item.name" ng-change="ctrl.updateSub(item)" ng-model="item.qty" max="item.maxqty" min="0">

我正在尝试验证最大值,也是动态设置的。

我在任何地方都找不到的是如何在ng-show类中设置名称。

<div class="col-sm-2 error" ng-show="form.{{item.name}}.$invalid">
     <small class="error" ng-show="form.{{item.name}}.$error.max">
         You exceeded the maximum allowed
     </small>
</div>

我该如何处理{{item.name}}位? 提前感谢任何帮助或指示。 Angular 1.3.12

1 个答案:

答案 0 :(得分:0)

首先form是保留关键字,您不能将其用作表单名称。 很快就会出现问题,因此无法为表单输入生成动态名称。

您可以在ng-form的帮助下实现您想要的效果 看看这个例子:

<form name="yourForm" >
  <div ng-repeat="field in fields" ng-form="myInnerForm">
    <input type="text" name="dynamic_input" ng-model="field.name"/>
    <div ng-show="myInnerForm.dynamic_input.$dirty && myInnerForm.dynamic_input.$invalid"> 
      The field is required.
    </div> 
  </div> 
</form>