Рубрики
Без рубрики

Как написать Async Validator в Angularjs

Сегодня давайте узнаем о асинхронных валидах в Angularjs и как вы можете использовать его в ваших проектах.

Автор оригинала: Quoc Vo Minh.

Сегодня давайте узнаем о асинхронных валидах в Angularjs и как вы можете использовать его в ваших проектах.

Краткий фон

Мы хотим проверить, существует ли имя пользователя или не каждый раз, когда гость входит в имя пользователя в поле ввода. В этом руководстве я покажу ошибку, если сервер уже имеет имя пользователя.

Давайте начнем:

Во-первых, давайте создадим простой вид с именем пользователя и ввода пароля.

Далее, давайте напишем имя директива под названием Uternamexist.

angular.module('test').directive('userExist', function($http, $q) {
    return {
        require: 'ngModel',
        link: function(scope, element, attrs, ngModel) {
            ngModel.$asyncValidators.userExist = function(modelValue, viewValue) {
                return $http.post('/username', {username: viewValue})
                    .then(
                     function(response) {
                             if (!response.data.status) {
                                  return $q.reject(); 
                                 //Server will give me a  notify if it exist or not. I will throw a error If it exist with "reject"
                             }
                        return true;
                    }
                );
            };
        }
    };
});

Прежде чем мы продолжим следующие шаги, нам нужно что-то исправить на форме.

  • Во-первых, используйте директиву на входе

  • Далее измените условие на кнопке отправки (Чтобы обеспечить, когда Async Vailation пытается подключиться с $ http, он отключит эту кнопку).

Обертывание

Это оно! Это так просто!

Чтобы узнать больше о Angularjs, вы можете проверить другие учебные пособия, такие как: Директивы Angularjs: Практическое руководство для начинающих, валидация угловой формы – NGModelController, и мигрирование из угловых 1.x до угловых 2: обновление стратегий.