Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
angularjs中的延迟异步验证器_Angularjs_Validation_Asynchronous - Fatal编程技术网

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如果您找到了解决方案,您应该将其作为答案发布,并将其标记为已接受