Форма подтверждения на стороне сервера 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( '/' );
}
});
};
}
Любая помощь приветствуется и очень ценится. Спасибо заранее!
Ответы
Ответ 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
Ответ 3
Вот хорошая директива проверки, которая может быть полезной https://groups.google.com/forum/#!msg/angular/6v-AillQboI/D0OaZzV7Me0J
Ответ 4
Я сделал что-то, но его рельсы были конкретными, может быть, это может дать кому-то идею или нажать в правильном направлении
https://github.com/fmatosic/bubblemevalid