У меня есть элемент формы с обработчиком изменения ng. Я хочу программно запускать обработчик, но без прямого контроля объема. Я хочу сделать это, потому что я пишу расширение Chrome, поэтому я не могу легко получить доступ к «$ scope», чтобы получить обработчик.Как запрограммировать угловые манипуляторы?
Я попытался очевидный выбор
$(element).triggerHandler('change')
, но это не похоже на работу. См. Пример здесь: https://plnkr.co/edit/iaz7trxVT09XWBktGhE9?p=preview (в этом примере я регистрирую некоторые строки для консоли, когда выполняется обработчик изменений, но нажатие кнопки не регистрирует эти строки).
Я пробовал несколько других методов, найденных в различных потоках здесь, таких как trigger() или ручная конструкция события и огонь с диспетчером, но безрезультатно. Я не совсем понимаю, почему обработчик событий не запускается. Может ли кто-нибудь помочь?
В отличие от других 'ng-' директив, 'ng-change' не привязан к событию' change' базового элемента. Он привязан к '$ viewChangeListeners'' ng-model', поэтому нет способа вызвать его вручную, если у вас нет доступа к области tge. Почему вы используете 'ng-change'? Вместо этого будет работать «ng-input»? –
gkalpak
Спасибо. Это многое объясняет! Я не могу управлять страницей, поскольку я пишу расширение Chrome для заполнения форм, но это объясняет, почему мой код не работал! – user3759055
Фактически вы можете получить доступ к $ scope из внешнего мира с помощью 'scope = angular.element ($ (element)). Scope()', поэтому нет необходимости запускать 'change' – Icycool