我正在尝试按照AngularJS example对所需字段进行内联验证。但是,在使用ng-repeat
时,它似乎并不适合我。
<form name="myForm" novalidate>
Me: <input required type="text" name="myName" ng-model="name" />
<span class="error" ng-show="myForm.myName.$error.required">Required!</span>
<div ng-repeat="friend in friends">
Friends: <input required type="text" name="myFriend[{{$index}}]" ng-model="friend.name" />
<span class="error" ng-show="myForm.myFriend[{{$index}}].$error.required">Required</span>
</div>
</form>
知道我做错了什么或我能做些什么来解决它?
答案 0 :(得分:5)
不幸的是你无法这样做。 input元素不喜欢动态生成名称。您将需要使用ng-form作为子表单并包装重复的元素。这是你小提琴的一个分支:http://jsfiddle.net/p26VQ/
<div ng-controller="MyCtrl">
<form name="myForm" novalidate>
Me: <input required type="text" name="myName" ng-model="name" /><span class="error" ng-show="myForm.myName.$error.required">
Required!</span>
<div ng-repeat="friend in friends">
<ng-form name="subform{{$index}}">
Friends: <input required type="text" name="myFriend" ng-model="friend.name" />
<span class="error" ng-show="subform{{$index}}.myFriend.$error.required">Required</span>
</ng-form>
</div>
</form>
</div>
答案 1 :(得分:0)
至少使用AngularJS 1.4.3,您可以使用此功能:
name="formControl_{{uniqueId}}"
这:
ng-messages="myForm[ 'formControl_' + uniqueId ].$error"
摘录自丹尼(Danny)引用的问题中https://github.com/angular/angular.js/issues/1404#issuecomment-125805732的评论。