如何使表单提交等待验证完成角度js

时间:2014-02-14 22:50:27

标签: angularjs angularjs-directive

我有一个简单的表单,我必须在ajax调用上验证许多输入字段。

许多输入字段都是可重用的,所以我使用了它们的指令。

<input name="UserName" 
       type="text" 
       user-name-unique 
       ng-model="UserName" 
       required 
/>

指令功能:

 elem.on('blur', function(evt) {
   scope.$apply(function() {
     var data = { 'username': elem.val() };
     var ajaxConfiguration = { method: 'POST', url: 'url', data: data };
     async(ajaxConfiguration).success(function(data, status, headers, config) {
       ctrl.$setValidity('userNameUnique', !data.IsSuccess);
     });
   });
 });

类似地,我有许多指令使用ajax调用来验证输入。

如何让我的提交功能等待我的所有ajax请求完成?

1 个答案:

答案 0 :(得分:1)

创建一个您的提交按钮可以跟踪的指令,然后在您的提交按钮上打一个disabled指令,只有在您的自定义指令字段被评估为true时才会更新:

<input name="UserName" 
       type="text" 
       user-name-unique 
       ng-model="UserName" 
       required 
       validate="process()" //retun true/false, processed whenever value changes
/>


<form>
    <button type="submit" disabled>Submit</button>
</form>

然后在输入更新时创建一个监听器,并检查它的验证状态