angularjs 如何在 ng-repeat 下动态验证

How to dynamically validation under ng-repeat in angularjs

你好,我是 Angularjs 的初学者,我想构建动态 validations.Here 我的代码是否尽可能缩短。

JS

$scope.inputValidates = [
      { 'name':'name',
        'validate':'required',
      },
      { 'name':'email',
        'validate':'type = email',
      }]

HTML

<div ng-repeat="vitem in vm.inputValidates">
          <input name={{vitem.name}} ng-model="vm.useraccount[vitem.name]"             {{item.validate}}>
</div>

我希望这个输入结果为

<input name=name ng-model="vm.useraccount[vitem.name]    required>
<input name=name ng-model="vm.useraccount[vitem.name]    type = email>

感谢您抽出宝贵时间。

使用ng-required:

<div ng-repeat="vitem in vm.inputValidates">
    <input name={{vitem.name}} ng-model="vm.useraccount[vitem.name]" ng-required="item.validate">
</div>

顺便说一下,我看到你把 inputValidates 分配给了你的 $scope。因此,您应该通过 inputValidates 而不是 vm.inputValidates.

在您的视图中访问它

样本是 HERE

示例包含应用于使用 ng-repeat 呈现的文本框的必需验证和模式验证,并根据您的验证类型使用 ng-switch

    <div ng-repeat="field in fields">
   <div style="width:600px">
      <div ng-form name="validMe" style="width:58%;float:left" ng-switch="field.validationType">
         {{field.name}} :
         <div ng-switch-when="required">
            <input id="input{{$index}}"  name="input{{$index}}" type="text" ng-model="field.value" required> 
            <span style="color: #a94442" ng-show="validMe['input\{\{$index\}\}'].$error.required ">Field Required!</span>
         </div>
         <div ng-switch-when="email">
            <input type="email" id="input{{$index}}"  name="input{{$index}}" ng-model="field.value" ng-pattern="/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/">
            <span style="color: #a94442" ng-show="validMe['input\{\{$index\}\}'].$error.pattern">Not a valid email!</span>
         </div>
      </div>
   </div>
</div>