AngularJS需要在ng-repeat中进行字段验证

Dan*_*nny 4 angularjs

我试图遵循AngularJS对所需字段进行内联验证的示例.但是,当涉及到使用它时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>
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

知道我做错了什么或我能做些什么来解决它?

aet*_*aet 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> 
Run Code Online (Sandbox Code Playgroud)

  • 对于遇到此问题的任何其他人,问题都已关闭,现在可以动态生成名称. (2认同)