2016-09-16 3 views
2

비동기 웹 요청에 의해 사용자가 지정한 메일의 유효성을 검사하는 지시문을 만들려고합니다. 그것은 잘 작동하지만 문제는 사용자가 문자를 입력 할 때마다 비동기 호출이 만들어지기 때문에 비동기 호출이 흐림에만 수행되도록하고 싶습니다. 어떻게 할 수 있습니까? 나는 블록흐림 각도의 비동기 유효성 검사 지시문 JS

element.bind('blur', function() { ... }) 

모든 것을 넣어하지만 코드가 element.bind 블록 내부에있을 때 나는 완전히 이상한을 위해 노력했다

angular.module('myModule').directive('usernameValidator', function($http, $q) { 
return { 
    require: 'ngModel', 
    link: function(scope, element, attrs, ngModel) { 
     ngModel.$asyncValidators.username = function(modelValue, viewValue) { 
      return $http.post('/username-check', {username: viewValue}).then(
       function(response) { 
        if (!response.data.validUsername) { 
         return $q.reject(response.data.errorMessage); 
        } 
        return true; 
       } 
      ); 
     }; 
    } 
}; 
}); 

: 여기

는 지시 코드입니다 비동기 호출을 흐리게 처리 할 때 입력에 초점을 맞출 때 입력에 초점을 맞출 때 각 문자에 대한 비동기 호출이 발생합니다.

답변

2

지시문을 에 표시된대로 ng-model-options="{ updateOn: 'blur' }"과 같이 지시문에 추가하려고하면 지시문이 다음과 같이 표시됩니다.

<input ng-model="your_model" 
     username-validator 
     ng-model-options="{ updateOn: 'blur' }"> 
관련 문제