我有一个简单的表单,我必须在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请求完成?
答案 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>
然后在输入更新时创建一个监听器,并检查它的验证状态