我有一个AngularUI Bootstrap Typeahead。它会在模型更改时触发,以过滤值。
但是,我也有一个附加到该字段的指令,应该触发onBlur。该指令搜索数据库以根据typeahead字段的输入检查是否需要另一个字段。
如果我将ng-model-options更改为模糊,我会销毁typeahead。如果我将指令更改为函数以使用ng-blur,我无法弄清楚如何处理promises和asyncValidators。
这是我的验证指令:
angular.module('myApp').directive('myfieldValidation', ['$q', 'myService', function ($q, myService) {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, elem, attrs, ctrl) {
ctrl.$asyncValidators.myfieldisvalidated = function (modelValue) {
var defer = $q.defer();
myService.getdetailsofField(modelValue)
.then(function (response) {
console.log(response.data);
if (response.data.success == false && modelValue !== undefined && modelValue !== "") {
scope.launchfunction();
defer.reject();
}
else if (response.data.success == true) {
scope.Name = response.data.data["Name"];
scope.Number = response.data.data["Number"];
}
else {
defer.resolve();
}
});
return defer.promise;
};
}
}
}]);
答案 0 :(得分:0)
为onBlur函数添加超时。
function onBlurFunction(){
$timeout(function(){
//some code
}, 300);
};