gpt4 book ai didi

angularjs - ngRepeat 中的 Angular 表单验证

转载 作者:行者123 更新时间:2023-12-02 01:18:21 24 4
gpt4 key购买 nike

我在 ng-repeat 中有一系列带有各种输入的表行,我正在尝试使用 angular 的内置表单验证来处理所需的字段。一切正常,除了当我删除支持 ng-repeat 的数组中的一项时。

这是我设置验证的方式

<td ng-class="{ 'has-error' : vm.testForm.itemName{{$index}}.$invalid }">
<input type="text"
name="itemName{{$index}}"
class="form-control"
ng-model="item.name"
required />
<div class="help-block"
ng-show="vm.testForm.itemName{{$index}}.$invalid"
ng-messages="vm.testForm['itemName'+$index].$error">
<span ng-message="required">Name is required</span>
</div>
</td>

Plunker 显示我的问题

https://plnkr.co/edit/Q1qyqlSG69EXR2lTrsHk

在 plunker 中,如果删除表的第一行,您会注意到虽然最后一行仍然无效,但错误已附加到上面的行。然后,当您填写最后一行以使其有效然后再次清空时,错误仍然显示在错误的行上。删除后续行只会将错误从实际无效行移得更远,直到它们根本不出现在表中。

我应该用另一种方法来验证这些输入吗?

最佳答案

问题是您通常不会在内置的 Angular 指令中使用 {{}} (插值)。因此,将您的代码更改为:

<td ng-class="{ 'has-error' : vm.testForm['itemName' + $index].$invalid }">
<input type="text"
name="itemName{{$index}}"
class="form-control"
ng-model="item.name"
required />
<div class="help-block"
ng-show="vm.testForm['itemName' + $index].$invalid"
ng-messages="vm.testForm['itemName'+$index].$error">
<span ng-message="required">Name is required</span>
</div>
</td>

改变:
vm.testForm.itemName{{$index}}.$invalid

到:
vm.testForm['itemName' + $index].$invalid

做了一个plunker来验证:
https://plnkr.co/edit/vuQiH4D8qUY9jVoThnCy?p=preview

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com