Допустим, у нас есть пользовательский валидатор со входом в качестве значения атрибута.Проверка триггера при изменении области действия пользовательского валидатора
app.directive('inputRequired', function() {
return {
require: 'ngModel',
scope: {
inputRequired: '='
},
link: function(scope, elm, attrs, ctrl) {
ctrl.$validators.inputRequired = function(modelValue) {
return !(scope.inputRequired && ctrl.$isEmpty(modelValue));
};
}
};
});
В рамках мы определяем переменную и функцию для переключения значения переменной:
$scope.isRequired = false;
$scope.toggle = function() {
$scope.isRequired = !$scope.isRequired;
};
Затем мы создаем форму, где мы будем использовать собственный валидатор. Мы также добавляем кнопку для вызова функции переключения.
<form>
<input type="text" ng-model="someModel" input-required="isRequired"/>
<button ng-click="toggle()">toggle</button>
</form>
Как это должно работать? Когда форма загружается и область инициализируется, значение isRequired
установлено на false
. Поэтому поле ввода не требуется. Когда мы нажимаем на кнопку переключения, значение isRequired
изменяется на true
. Но! Проверка не запускается, хотя переменная в области проверки достоверности была изменена.
Важное примечание: это только пример. Я знаю директиву ng-required
, которая реализует эту функциональность. Мне нужно общее решение для случаев, когда валидатор имеет вход и действительность поля, зависит от этого ввода. Если ввод изменен, поле должно быть проверено немедленно.