Подтвердить что ты не робот

Форма подтверждения на стороне сервера Angular.js

Валидация по умолчанию для формы, в которой я работаю, как и ожидалось. Но когда пользователь вводит допустимый адрес электронной почты и пароль минимум из трех символов, это не означает, что учетные данные пользователя действительны.

Итак, мой вопрос заключается в том, как я могу установить для модели "email" и "password" значение "недействительно" после проверки на стороне сервера, поэтому поля ввода получают класс ng-invalid вместо ng- действительный.

Мой текущий код:

function IndexCtrl( $scope, $http )
{
  $scope.form = {};
  $scope.submitLogin = function ()
  {
    $http.post( '/api/auth/login', $scope.form ).success( function( data )
    {
      if ( !data.success )
      {
        $scope.form.errors = [ data ];

        // here I also want to mark the models 'email' and 'password' as invalid, so they both get the class 'ng-invalid'
      }
      else
      {
        $location.path( '/' );
      }
    });
  };
}

Любая помощь приветствуется и очень ценится. Спасибо заранее!

4b9b3361

Ответ 1

Tosh shimayama дал правильный ответ. $setValidity - это метод из NgModelController и принимает два параметра: validationErrorKey и isValid.

Дополнительная информация о $setValidity

Измените состояние действительности и уведомлите форму, когда элемент управления изменения действительности. (то есть он не уведомляет форму, если данный валидатор уже отмечен как недопустимый).

Источник и дальнейшая информация AngularJS: NgModelController

Ответ 2

Проверка на стороне клиента выполняется быстро, но ее легко разбить, используя, например, firebug. Вы можете придерживаться только проверки на стороне сервера. Проверяйте все на сервере и возвращайте BODY со списком ключей и сообщений об ошибках. Angular позволяет вам отправлять данные на сервер асинхронно, конечный пользователь увидит его как проверку на стороне клиента, поскольку не было видимой обратной связи.

В этом примере попробуйте нажать "Сохранить" и увидеть сообщения об ошибках: upida.cloudapp.net:8080/org.upida.example.angular/order/create?clientId=1

Вы можете скачать его: upida.codeplex.com

Ответ 4

Я сделал что-то, но его рельсы были конкретными, может быть, это может дать кому-то идею или нажать в правильном направлении https://github.com/fmatosic/bubblemevalid