Forms angularjs:以编程方式验证触发器表单(在控制器内)

Forms angularjs:以编程方式验证触发器表单(在控制器内),forms,validation,angularjs,Forms,Validation,Angularjs,在这种情况下,我分两步显示1个表单。因此,要进入表单的第二部分,您必须单击一个按钮。但在继续之前,我想执行表单验证(需要填写所有必填字段)。但是因为这是一个普通按钮,所以整个提交魔法不会被触发,验证也不会发生。所以我感兴趣的问题是如何在控制器中触发表单验证?触发特定字段的验证甚至更好。只是想说明一下,表单如下所示 <form name="form" submit="save()"> <section id="step1"> <label fo

在这种情况下,我分两步显示1个表单。因此,要进入表单的第二部分,您必须单击一个按钮。但在继续之前,我想执行表单验证(需要填写所有必填字段)。但是因为这是一个普通按钮,所以整个提交魔法不会被触发,验证也不会发生。所以我感兴趣的问题是如何在控制器中触发表单验证?触发特定字段的验证甚至更好。只是想说明一下,表单如下所示

<form name="form" submit="save()">
    <section id="step1">
        <label for="username" required>Username</label>
        <input type="text" name="username" ng-model="user.username" required />
        .....
        <button ng-click="proceed()">Proceed</button>        
    </section>
    <section id="step2">
         <label ...></label>
         <input...>
         ....
         <button type="submit">Save</button>
    </section>
</form>    

用户名
.....
继续
....
拯救
此外,在所有必填字段都有效之前,我不想选择禁用该按钮。

继续
 <button ng-click="proceed()">Proceed</button>   
替换为:

 <button ng-click="proceed()" ng-disabled="form.$invalid">Proceed</button>   
继续
在所有必填字段都有效之前,按钮将不可见

 <button ng-click="proceed()">Proceed</button>   

您可以从控制器访问
$valid
属性。像这样的东西可能有用

 $scope.proceed = function(){     
      if($scope.form.username.$valid){
          //username is valid we may proceed to the next step
      }
 };
请看下面的图片。它允许嵌套表单(实际上不是HTML
s,而是NGFormController)。因此,您可以将用于发布到服务器的一个表单拆分为两个用于独立验证的逻辑表单:

<form submit="save()">
    <div ng-form="form1">
        ...controls...
        <button ng-click="proceed()"
            ng-disabled="form1.$invalid">Proceed</button>
    </div>
    <div ng-form="form2">
        ...controls...
        <button type="submit"
            ng-disabled="form2.$invalid || form1.$invalid">Submit</button>
    </div>
</form>

…控制。。。
继续
…控制。。。
提交

为什么需要1张表格?您可以将其一分为二并使用Angular的验证。只有当第一个表单有效时,“继续”按钮才应该启用。我认为正确的方法是执行验证指令。我选择一个表单,因为整个提交回服务器(文件上传等)更容易,只需一次调用。如何用指令做到这一点?不,不正确。从UI的角度来看,这不是一回事。禁用该按钮会让用户感到困惑。通常认为,最好始终保持按钮处于启用状态,并且只在填写表单时或表单提交后显示错误消息。