У меня есть угловая директива, используемая в качестве атрибута для проверки ввода.Подтвердить угловую форму программно
ввода выглядит следующим образом (нефрит)
input.form-control(type='text', name='subjectinput', id='subjectinput', subjectid-noprefix-validator='(subject.nosuffix==1)')
и валидатор выглядит
.directive('subjectidNoprefixValidator', function() {
return {
require: ['^form', 'ngModel'],
scope: {
noprefixformat: '=subjectidNoprefixValidator'
},
link: function (scope, element, attrs, ctrls) {
scope.form = ctrls[0]; // so we can use form reference in displaying error messages
var ngModel = ctrls[1];
ngModel.$validators.subjectidnoprefix = function (value) {
var status = true;
// removed some logic that sets status true or false
// using $scope.noprefixformat parameter
return status;
};
}
};
});
Он отлично работает. Однако иногда в действиях страницы происходит событие, которое требует проверки на повторное включение в INPUT, не касаясь его; некоторые изменения переключателя должны повторно запускать его и обновлять статус проверки (как вы видите, мой валидатор имеет параметр).
Я пытался добиться ее, позвонив в страницу контроллера
$scope.subjCreationForm.subjectinput.$validate();
, но это не похоже на работу. Что может быть и есть ли другой способ инициировать проверку поля программно, когда он использует $ validators?
Здесь http://stackoverflow.com/questions/30412661/force-asyncvalidators-in- angularjs/30503030 # 30503030 мой ответ на аналогичный вопрос. – Mikalai