Я изучаю учебное пособие «Создание приложений с помощью проверки углов, узлов и токенов». И я застрял. Я нашел этот код там:Проверка пароля AngularJS
HTML
<form name="register" class="form-signin" novalidate>
<h1 class="form-signin-heading text-muted">Register</h1>
<input type="email" ng-model="email" name="email" class="form-control" placeholder="Email address" required autofocus>
<p class="help-block" ng-show="register.email.$dirty && register.email.$invalid">Please enter a proper email.</p>
<input type="password" name="password" ng-model="password" class="form-control" placeholder="Password" required>
<input type="password" name="password_confirm" ng-model="password_confirm" class="form-control" placeholder="Confirm Password" validate-equals="password">
<p class="help-block" ng-show="register.password_confirm.$invalid && register.password_confirm.$dirty">please match the passwords.</p>
<button ng-disabled="register.$invalid" class="btn btn-lg btn-primary btn-block" type="submit">
Submit
</button>
</form>
и JS
angular.module('myApp', []).directive('validateEquals', function() {
return {
require: 'ngModel',
link: function (scope, element, attrs, ngModelCtrl) {
function validateEqual(value) {
var valid = (value === scope.$eval(attrs.validateEquals));
ngModelCtrl.$setValidity('equal', valid);
return valid ? value : undefined;
}
ngModelCtrl.$parsers.push(validateEqual);
ngModelCtrl.$formatters.push(validateEqual);
scope.$watch(attrs.validateEquals, function() {
ngModelCtrl.$setViewValue(ngModelCtrl.$viewValue);
});
}
};
});
этой директива в соответствии с видео должна дать мне правильные двухсторонние проверки для password
и password_confirm
входов, но (на видео он работает, я запутался). Он хорошо проверяет, когда я меняю значение password_confirm
, но когда я меняю password
, проверка не работает. Вот плункер plunker. Вопрос: Что не так с этим кодом? И как мне это исправить?
Thx много, валидаторы это правильный путь, я буду размещать свою новую рабочую директиву. – szapio