如何将ng-maxlength验证添加到ng-repeat并显示错误消息?

时间:2015-07-12 10:21:21

标签: angularjs angularjs-ng-repeat angularjs-validation

我有一个简单的代码:

    <div class="row" ng-repeat="aDiagnosis in diagnosisListForPrescription">

                        <div class="col-md-4 padding-right-zero" id={{aDiagnosis.rowIndex}}>
                            <input class="form-control" name="aDiagnosisName" ng-model="aDiagnosis.Name" ng-disabled="true">
                        </div>
                        <div class="col-md-4 padding-right-zero form-group" show-errors id={{aDiagnosis.rowIndex}}>
                            <input class="form-control" name="aDiagnosisResult" ng-maxlength="200" ng-model="aDiagnosis.Result" />
                            <p class="help-block" ng-if="form.aDiagnosisResult.$error.maxlength">Too Large</p>
                        </div>
</div>

并使用$ scope.form。$ valid生成错误消息。 但问题是,因为每次找到相同的名称时使用ng-repeat,当我想通过单击按钮生成第二个列表时,第一个错误消息消失了,错误消息现在可以在第二个文本上工作(显然)。 那么我如何动态地每次都生成错误消息,所以每个文本形式都在ng-repeat中,它有自己的错误信息。

1 个答案:

答案 0 :(得分:2)

您可以在name中生成输入的动态ng-repeat属性。例如,您可以将$index(或对象的ID或您想要的任何内容)设置为您的输入生成唯一的name

<div class="row" ng-repeat="aDiagnosis in diagnosisListForPrescription">

     <div class="col-md-4 padding-right-zero" id={{aDiagnosis.rowIndex}}>
          <input class="form-control" name="aDiagnosisName-{{$index}}" ng-model="aDiagnosis.Name" ng-disabled="true">
     </div>
     <div class="col-md-4 padding-right-zero form-group" show-errors id={{aDiagnosis.rowIndex}}>
          <input class="form-control" name="aDiagnosisResult-{{$index}}" ng-maxlength="200" ng-model="aDiagnosis.Result" />
          <p class="help-block" ng-if="form['aDiagnosisResult-' + $index].$error.maxlength">Too Large</p>
     </div>
</div>

Example on plunker.