У меня есть переключатель в моем пользовательском интерфейсе с ngModel, и он включает/отключает другой ввод через ngDisabled.
Я хочу наблюдать/наблюдать/запускать, когда элемент ввода становится включенным/отключенным, и это нужно сделать в службе Angular. Я просто не могу найти, как это сделать. Вот как я бы сделал это в директиве:
// for the case of field that might be ng-disabled, we should skip validation
// Observe the angular disabled attribute
attrs.$observe("disabled", function(disabled) {
if (disabled) {
// Turn off validation when element is disabled
cancelValidation();
} else {
// Re-Validate the input when enabled
var value = ctrl.$viewValue || '';
ctrl.$setValidity('validation', validate(value, true));
}
});
Но как это сделать в Сервисе???
Я не хочу иметь другую Директиву, я действительно хочу, чтобы это было сделано через Сервис.
Прежде чем задать вопрос, я нашел это Можно ли "смотреть" изменения атрибутов и я пробовал
scope.$watch(function() {return element.attr('disabled'); }, function(newValue){});
но это, похоже, не работает, по крайней мере, когда я включаю/отключаю свой переключатель (элемент ввода как ngDisabled, который привязан к переключателю с помощью ngModel)
Я также обнаружил, что мы могли бы использовать jQuery.watch(), но я хочу придерживаться ванильного javascript или jqLite. Является ли это возможным?
EDIT
Я должен был упомянуть, что эта Служба является самостоятельной и не имеет доступа к Контроллеру, потому что это инструмент проверки формы, и он не знает о внешнем (по крайней мере, не более чем сам элемент и его область действия). Вы можете проверить и использовать его, если хотите: Angular-Validation, и он поддерживает Directive и Сервис в зависимости от того, что или где вы хотите, чтобы проверка происходила, и моя проблема была связана только с кодом в Сервисе. Ответ от pankajparkar помог мне решить эту проблему... Спасибо :)