Имитация клика по угловому элементу - PullRequest
0 голосов
/ 27 июня 2019

Мне нужно вызвать некоторые функции контроллера Angular из-за пределов приложения. Я не могу изменить само приложение Angular - для простоты код должен запускаться в консоли браузера (финальная часть будет интегрирована в расширение Chrome).

Я смотрел на другие ответы - но они устарели или просто не работают. AngularJS. Как вызвать функцию контроллера из-за пределов компонента контроллера казалось многообещающим, но не может заставить его работать.

С учетом следующего HTML:

<div data-ng-if="::ctrl.isEntityNotesEnabled"
     data-ng-class="{'menu__item--enabled': ctrl.isNotesShown}"
     data-ng-click="ctrl.toggleNotesSection()" role="button">
  Show 
</div>

Я хочу вызвать ctrl.toggleNotesSection () из JavaScript - но вне приложения.

ОБНОВЛЕНИЕ: Я попробовал кое-что:

// this will return undefined, old AngularJS approach
angular.element('ng-controller-selector').scope()
// seems a bit closer to what I want, but "ctrl" isn't exposed, nor toggleNotesSection()
angular.element('ng-controller-selector').injector().get('$rootScope')
// I also tried using the DIV element, without success
angular.element('div selector')

1 Ответ

0 голосов
/ 27 июня 2019

Некоторые вещи, которые я пробовал:

// this will return undefined, old AngularJS approach
angular.element('ng-controller-selector').scope()

В производственной версии AngularJS отключен метод .scope() для повышения производительности.

Если вы хотитечтобы отладить приложение с этой информацией, откройте консоль отладки в браузере, а затем вызовите этот метод непосредственно в этой консоли:

angular.reloadWithDebugInfo();

Страница должна перезагрузиться, и теперь должна быть доступна информация отладки.

Подробнее см. На страницах документации по $ compileProvider и angular.reloadWithDebugInfo .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...