Angular UI Typeahead字段需要触发模糊验证

时间:2016-05-20 17:37:38

标签: javascript angularjs twitter-bootstrap asynchronous angular-ui-typeahead

我有一个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;
            };
        }
    }
}]);

1 个答案:

答案 0 :(得分:0)

为onBlur函数添加超时。

    function onBlurFunction(){
      $timeout(function(){ 
        //some code
      }, 300);
    };