angularjs:ng-repeat 中的表单验证

标签 angularjs

我正在尝试使用 Angular 进行表单验证。问题是我的表单输入在 ng-reapeat 中并且它们具有相同的名称。因此,如果一个必填字段未填写,其他字段也会显示为无效。

为了解决这个问题,我使用了一个内部的 ng-form,如下所示。但不会触发验证。

知道我做错了什么吗?

 <form name="referenceForm" >

      <table>

 <tbody ng-repeat="ref in vm.references | filter:{type: 'ReferenceUrl'}">
                        <ng-form name="urlForm">
                            <tr>
                                <td>
                                    <input name="urlName" type="text" ng-model="ref.reference.urlName" ng-disabled="ref.reference.isScreenDeleted" required />
                                    <span ng-show="urlForm.urlName.$error.required">*</span>
                                </td>
                                <td>
                                    <input name="shortName" type="text" ng-model="ref.reference.shortName" ng-disabled="ref.reference.isScreenDeleted" required />
                                    <span ng-show="urlForm.shortName.$error.required">*</span>
                                </td>
                                <td>
                                    <a class="btn grid-button grid-edit-row btn-danger" ng-if="!ref.reference.isScreenDeleted" ng-click="toggleDelete(ref.reference)"><i class="fa fa-trash-o"></i></a>
                                    <a class="btn grid-button grid-edit-row btn-info" ng-if="ref.reference.isScreenDeleted" ng-click="toggleDelete(ref.reference)"><i class="fa fa-refresh"></i></a>
                                </td>
                            </tr>
                        </ng-form>
                    </tbody>
           </table>

</form>

最佳答案

把不在里面的东西放在 table 上不是一个好主意。
永远不知道它会如何运作。

将 ng-form 作为属性放在标签上。

所以你应该替换这个:

<tbody ng-repeat="ref in vm.references | filter:{type: 'ReferenceUrl'}">
  <ng-form name="urlForm">

有了这个:
<tbody ng-repeat="ref in vm.references | filter:{type: 'ReferenceUrl'}" ng-form="urlForm">

关于angularjs:ng-repeat 中的表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22248733/

相关文章:

javascript - 不在选择标签下拉列表中选择以隐藏另一个输入元素的嵌套 Controller

javascript - 如何动态更新 AngularJS 谷歌地图?

javascript - Angularjs 在没有 ng-view 的情况下使用 $routeProvider

angularjs - Angular(Angular 2+)模板中没有子组件嵌套的子组件与父组件的通信

javascript - Angular 模型仅在 console.log() 之后更新

javascript - AngularJS——如何在 Jasmine 中为输入事件指令编写单元测试

javascript - ng-show 令人不安的 div 布局 - angularJS

javascript - 为 ng-form 手动将 $dirty 设置为 false

javascript - AngularJS 在运行时覆盖依赖

javascript - 如何在融合图表中显示 Angular 表图表的值底部?