4
我有一个具有用户名字段和其他字段的表单,此字段有一个异步验证程序,用于在您尝试提交表单时检查该用户名是否可用(使用异步验证的形式)。我使用这个指令来验证和提交表单(仅当它是有效的):
<form validation-submit="submit()"></form>
app.directive('validationSubmit', ['$parse', function($parse) {
return {
restrict: 'A',
require: '?form',
compile: function($element, attr) {
var submitFn = $parse(attr.validationSubmit);
return function link(scope, element, attrs, FormController) {
var submit = function(event) {
scope.$apply(function() {
if (! FormController.$valid) {
return;
}
submitFn(scope, {$event: event}));
});
};
element.bind('submit', submit);
scope.$on('$destroy', function() {
return element.off('submit', submit);
});
}
}
};
}]);
问题是这样的指令,不等待挂起异步验证到结束。我如何才能更改此指令,以便在所有异步验证完成并通过后才提交?
你需要验证服务器端提交(永远不要相信客户端数据和所有这些),那么为什么不立即提交? – Alan 2014-12-08 08:42:14
完全同意Alan ...如果你真的想做异步验证,请在特定的用户名字段上进行,而不是在提交... – harishr 2014-12-08 08:45:55
@harish好吧,让我们来说说我对该特定字段进行了验证 - 如何才能我阻止提交,直到它完成对该字段的验证? – dbabaioff 2014-12-08 08:48:52