Я пытаюсь проверить два поля ввода пароля.Просто подтвердите, что они равны.( Предложите другой подход, если у меня неправильный подход )
Я реализовал директиву с простой проверкой, которая проверяет, совпадает ли пароль подтверждения с оригиналом.Но директива также проверяет другие вещи, поэтому мне нужно иметь оба поля ввода, чтобы иметь это.
Проблема в том, что когда у меня есть директива для обоих полей ввода, я не могу прочитать их значения модели через атрибут (чтобы проверить, совпадают ли они).
Вот рабочая демонстрация бездиректива о первом пароле:
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
});
app.directive('myDir', function() {
return {
require: 'ngModel',
link: function(scope, elem, attrs, ctrl) {
ctrl.$validators.mismatch = function(modelValue, viewValue) {
// MAIN CODE:
return viewValue === scope.$eval(attrs.confirm);
};
ctrl.$validators.short = function(modelValue, viewValue) {
if (ctrl.$isEmpty(modelValue)) {
return true;
}
if (modelValue.length >= 3) {
return true;
}
return false;
}
}
};
});
{{form1.password2.$error | json}}
Пароли разные
Если я изменю первое поданное на:
<input type="password" my-dir confirm="pass2" name="password1" ng-model="pass1">
для проверки вв обоих направлениях scope.$eval(attrs.confirm)
становится undefined
для обоих полей.
Вот демонстрация моей проблемы:
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
});
app.directive('myDir', function() {
return {
require: 'ngModel',
link: function(scope, elem, attrs, ctrl) {
ctrl.$validators.mismatch = function(modelValue, viewValue) {
// `scope.$eval(attrs.confirm)` always undefined
return viewValue === scope.$eval(attrs.confirm);
};
ctrl.$validators.short = function(modelValue, viewValue) {
if (ctrl.$isEmpty(modelValue)) {
return true;
}
if (modelValue.length >= 3) {
return true;
}
return false;
}
}
};
});
{{form1.password2.$error | json}}
Пароли разные