У меня есть AngularUI Bootstrap Typeahead. Он срабатывает при изменении модели для фильтрации значения.
Однако у меня также есть директива, прикрепленная к этому полю, которая должна запускать onBlur. Директива ищет в базе данных, чтобы проверить, требуется ли другое поле на основе ввода поля typeahead.
Если я изменю ng-model-options на размытие, я уничтожу ввод. Если я изменяю директиву на функцию, чтобы использовать ng-blur, я не могу понять, как работать с промисами и асинхронными валидаторами.
Вот моя директива проверки:
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;
};
}
}
}]);