模拟点击角度元素

时间:2019-06-27 16:10:45

标签: javascript angularjs

我需要从应用程序外部调用一些Angular控制器函数。我无法修改Angular应用本身-为简单起见,代码应在浏览器控制台中运行(最终将集成在Chrome扩展程序中)。

我查看了其他答案-但它们已经过时或根本无法使用。 AngularJS. How to call controller function from outside of controller component似乎很有前途,但无法使其正常工作。

给出以下HTML:

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

我想从JavaScript调用 ctrl.toggleNotesSection()-但在应用程序外部。

更新:我尝试过的一些事情:

// 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 :(得分:0)

  

我尝试过的一些事情:

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

生产版本的AngularJS禁用了.scope()方法以提高性能。

如果要使用此信息调试应用程序,则应在浏览器中打开调试控制台,然后在此控制台中直接调用此方法:

angular.reloadWithDebugInfo();

页面应该重新加载,并且调试信息现在应该可用。

有关更多信息,请参见$compileProviderangular.reloadWithDebugInfo上的文档页面。