2015-10-19 43 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-'方法进行验证,它不能工作 –

相关问题