【发布时间】:2018-02-17 10:59:27
【问题描述】:
我有一个使用 Angular 的验证表单。我想使用动态文本区域名称验证ng-repeat 中的表单。查看我的代码:
<div ng-repeat="comment in comments track by $index">
<form name="main.adminArticleReplyForm" novalidate>
<div ng-class="{'has-success':(main.adminArticleReplyForm.commentReply_{{$index}}.$valid), 'has-error':(!main.adminArticleReplyForm.commentReply_{{$index}}.$valid)}">
<textarea name="commentReply_{{$index}}" ng-model="main.commentReply[$index]" required></textarea>
<ul ng-show="(!main.adminArticleReplyForm.commentReply_{{comment.number}}.$pristine && main.adminArticleReplyForm.$error.minlength[0].$viewValue.length)">
<li>You have to add {{10 - main.adminArticleReplyForm.$error.minlength[0].$viewValue.length}} characters</li>
</ul>
<button type="submit">Submit</button>
</div>
</form>
</div>
还有我的问题:
- 如果您检查
{{main.adminArticleReplyForm}}commentReply_{{$index}} 始终是 ng-repeat 中的最后一个 $index,例如,如果数组中的 4 个 cmets 始终是commentReply_4,但DOM中的 textareas 名称是正确的. - 我必须将控制器用作
main,但如果我从表单名称中删除main,一切正常。 - 总结,
{{main.adminArticleReplyForm}}仅对 ng-repeat 中的最后一个 $index 有效,之前 $indexes 被忽略 - 这里是每条commentReply_{{$index}} 都是commentReply_2 https://jsfiddle.net/8od25zhb/5/
【问题讨论】:
标签: angularjs forms validation angularjs-ng-repeat