我需要从应用程序外部调用一些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')
答案 0 :(得分:0)
我尝试过的一些事情:
// this will return undefined, old AngularJS approach angular.element('ng-controller-selector').scope()
生产版本的AngularJS禁用了.scope()
方法以提高性能。
如果要使用此信息调试应用程序,则应在浏览器中打开调试控制台,然后在此控制台中直接调用此方法:
angular.reloadWithDebugInfo();
页面应该重新加载,并且调试信息现在应该可用。
有关更多信息,请参见$compileProvider和angular.reloadWithDebugInfo上的文档页面。