2015-10-19 36 views
0

考慮以下代碼:爲什麼驗證對錶單名稱而不是模型有效?

<form class="form-horizontal" name="accountForm"> 
    <div class="form-group" ng-class="{ 'has-error': accountForm.CurrentPassword.$invalid }"> 
     <label class="col-sm-2 control-label">Current Password:</label> 
     <div class="col-sm-10"> 
      <input class="form-control" type="password" name="CurrentPassword" ng-model="user.CurrentPassword" ng-minlength="8" placeholder="Enter current password"> 
     </div> 
    </div> 
</form> 

爲什麼我們要給表單和輸入字段的名稱,並在執行驗證,是否有直接使用NG-模型的方法嗎?這將是清爽多了,如果我們可以這樣做:

ng-class="{ 'has-error': user.CurrentPassword.$invalid }"> 

不要把它在一個領域的背景下,但與幾十個領域的一種形式的上下文。它開始很快變老。在我看來,那

<input name="CurrentPassword" ng-model="user.CurrentPassword"/> 

是多餘的(儘管我明白,有不同的功能,參與,一個是從傳統的HTML方法後推出)。但是,我在Angular中發佈我的模型,所以我不需要該功能,但是由於驗證,我不得不添加它嗎?

編輯:

是的,當然修改類和/或基於模型使用disabled=""也是一種選擇,但在非常難看HTML結果,顯然$touched$invalid$error就不會工作。 。其他選項?或者任何人都可以解釋是否有任何有效的推理,爲什麼它是這樣寫的?

回答

0

如果你想使用AngularJS表單驗證,你必須像你一樣使用它。 否則,您可以基於模型綁定來執行您自己的規則,例如:

<form class="form-horizontal" name="accountForm"> 
     <div class="form-group" ng-class="{ 'has-error': (user.CurrentPassword.length < 8) }"> 
      <label class="col-sm-2 control-label">Current Password:</label> 
      <div class="col-sm-10"> 
       <input class="form-control" type="password" name="CurrentPassword" ng-model="user.CurrentPassword" placeholder="Enter current password"> 
      </div> 
     </div> 
</form> 
+0

'accountForm。$ error'將不會以這種方式工作。 – David

+0

我喜歡角度,但驗證特別似乎真的令人信服...... – David

+0

當然不是,如果你不使用'ng-'方法進行驗證,它不能工作 –

相關問題