Angular JS Validations показывает проблему после отправки формы и сброса значения модели

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

login.html

<form name="loginForm" ng-submit="loginForm.$valid && login(user)" novalidate style="position: relative">
<div class="log-input-frm mdl-textfield mdl-js-textfield mdl-textfield--floating-label textfield-demo">
<div class="col-sm-12 f_name">
<input ng-model="user.username" name="username" type="email" placeholder="Email address" required="">
<div ng-show="loginForm.$submitted || loginForm.username.$touched" ng-model="loginForm.username">
<span ng-show="loginForm.username.$error.required" class="text-danger">Please enter email address.</span>
<span ng-show="loginForm.username.$error.email" class="text-danger">Please enter valid email address.</span>
</div>
</div>
</div>
<div class="log-input-frm mdl-textfield mdl-js-textfield mdl-textfield--floating-label textfield-demo">
<div class="col-sm-12 f_name">
<input ng-model="user.password" name="password" type="password" placeholder="Password" required="">
<div ng-show="loginForm.$submitted || loginForm.password.$touched" ng-model="loginForm.password">
<span ng-show="loginForm.password.$error.required" class="text-danger">Please enter password.</span>
</div>
</div>
</div>
<div class="buttons">
<span class="signup pull-left">
<a ui-sref="forgotpassword">Forgot password</a>
</span>
<div class="link">
<div class="link" style="padding-bottom:0;">
<md-button type="submit" class="md-raised primary" > Login </md-button>
</div>
</div>
</div>
</form>

Код контроллера:

$scope.user.password = null;
$scope.message = 'Invalid email address or password.';
$mdToast.show(
$mdToast.simple()
.content($scope.message)
.position($scope.getToastPosition())
.hideDelay(3000)
);
blockUI.stop();

0

Решение

var ORIGINAL_DATA = $scope.user;

при сбросе:

$scope.user = angular.copy(ORIGINAL_DATA);
$scope.loginForm.$setPristine();

угловатый Документация для контроллеров формы.

Редактировать:

Попробуйте это проще всего:

<form name="loginForm" novalidate ng-submit="loginForm.$valid && login.submit()">

Нет необходимости в проверках контроллера.

0

Другие решения

Других решений пока нет …