angularjs中的延迟异步验证器
我有以下指示:angularjs中的延迟异步验证器,angularjs,validation,asynchronous,Angularjs,Validation,Asynchronous,我有以下指示: .directive('validateAsync', ['$http', 'API_LOCATION', function($http, API_LOCATION) { return { require : 'ngModel', link : function(scope, element, attrs, ngModel) { var apiUrl = attrs.validateAsync; function setAsLo
.directive('validateAsync',
['$http', 'API_LOCATION', function($http, API_LOCATION) {
return {
require : 'ngModel',
link : function(scope, element, attrs, ngModel) {
var apiUrl = attrs.validateAsync;
function setAsLoading(bool) {
ngModel.$setValidity('asyncLoading', !bool);
}
function setAsAvailable(bool) {
ngModel.$setValidity('asyncAvailable', bool);
}
ngModel.$parsers.push(function(value) {
if(!value || value.length == 0) return;
setAsLoading(true);
setAsAvailable(false);
$http.get(API_LOCATION + apiUrl, {
params: {
value : value
}
})
.success(function() {
setAsLoading(false);
setAsAvailable(true);
})
.error(function() {
setAsLoading(false);
setAsAvailable(false);
});
return value;
})
}
}
}]);
这就是所谓的:
<input ... validate-async="api/endpoint/to/check/validity">
它工作得很好,实际上太好了。当它在每次按键时触发一个请求
如何使指令在验证输入之前等待300ms
,或使其在input blur
上启动验证
更新
这比我想象的要容易: 添加
ng model options=“{debounce:300}”
成功了
感谢JB Nizet引导我找到正确答案这比我想象的要容易:添加ng模型选项=“{debounce:300}”成功了。非常感谢-比我想象的要容易thought@JB太好了solution@RVandersteen如果您找到了解决方案,您应该将其作为答案发布,并将其标记为已接受