2016-11-21 96 views
0

你好我是Angularjs的初學者,我想構建動態驗證。這裏是儘可能縮短我的代碼。如何在angularjs中的ng-repeat下進行動態驗證

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> 

感謝您抽出時間討論這個。

回答

0

使用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

+0

謝謝您的回答NG-重複和使用納克開關渲染文本模式驗證。但我仍然有一個問題。如果我使用'ng-required =「item.validate」'我只能使用必需的驗證isn'it?那麼其他驗證如何? –

+0

你說得對。你似乎需要的是在'ng-repeat'內動態添加指令,我不確定這是一個初學者應該潛入的東西。這些輸入是否真的需要在'ng-repeat'中?也許你可以重新考慮這個,看看AngularJS驗證(https://docs.angularjs.org/guide/forms) – lucasnadalutti

0

樣品是HERE

樣本包含需要和應用上使用基於您的驗證類型

<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.!#$%&’*+/=?^_`{|}~-][email protected][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>