2016-01-05 3 views
1

Здравствуйте, im, использую async Validators, чтобы проверить, существует ли в моей базе данных письмо, и оно хорошо проверяет, оно дает мне правильный HTTP-запрос, он отлично работает, например, при первой регистрации, он будет проверьте, существует ли пользователь в моей базе данных. Проблема, например, когда я использую для восстановления пароля. В документации сказано:Проверка на основе асинхронных валидаторов

«если $ HTTP используется, то важно, что сервер возвращает код ответа успех HTTP * для того, чтобы выполнить проверку и уровень статуса 4xx для того, чтобы отклонить проверки»

Итак, что происходит со мной, когда пользователь вставляет электронное сообщение на страницу восстановления пароля, он дает ответ «400 - неверный запрос» и делает форму/ввод недопустимой. Мне нужно изменить это beavihour, поскольку, когда запрос 400 дается, чтобы сделать проверку правильной, и если ответ равен 200, сделайте проверку ложной.

Пример кода Js:

return { 
    restrict: 'A', 
    require: 'ngModel', 
    link: function (scope, element, attribute, controller) { 
     controller.$asyncValidators.uniqueEmail = function (email) { 
      return $http 
       .post('/api/email/availability', {value: email}) 
       then(function(response) { 
         //username exists, this means validation fails 
         return $q.reject('exists'); 
         }, function(response) { 
         //username does not exist, therefore this validation passes 
         return true; 
       }) 
     }; 
    } 
} 
+0

создать plnkr, чтобы помочь другим понять проблему лучше –

ответ

0

проверить объект ответа вы получите в $ HTTP обратного вызова, он содержит код состояния.

$http docs

function(response) { 
    if (response.status == 200) { return true; } 
} 
+0

я уже пробовал. –

+0

также отметим, что первая функция в обратном вызове - для успеха, вторая - для обработки ошибок. см. https://docs.angularjs.org/api/ng/service/$q –

Смежные вопросы