2017-04-20 47 views
0

我需要调用我的AngularJS 1.6应用程序组件中定义的函数,但我需要在角度应用程序之外的简单JavaScript代码中执行此操作。我怎样才能做到这一点?从简单的外部JavaScript代码访问AngularJS 1.6组件功能

+0

我不是要问你为什么会想这样做,由@ArpadBajzath提供的答案似乎像它可以工作,但确实是一个不好的做法,最终会咬你或维护者。说,但如果你想测试快速和肮脏的东西,你可以尝试。 – Gaurav

+0

感谢@Gaurav,我的主要观点是,我希望将此组件嵌入到外部引导模式中,并且需要按下组件上的按钮以关闭此模式并执行其他操作。如果你能给我一些关于如何以更好的方式做的提示,我会很感激。 – gof

+1

那么,为什么不创建一个包装bootstrap模式的指令,或者更好地使用角度引导。可能是这将有助于https://angular-ui.github.io/bootstrap/#modal – Gaurav

回答

-1

使用标准的事件广播将帮助你。

您的组件内部:

document.addEventListener('trigger-my-method',() => myMethod());

别的地方:

let myEvt = new Event('trigger-my-method'); document.dispatchEvent(myEvt)

编辑: 我没有测试这个解决方案,我没有深入到角,但它应该工作

+0

谢谢你的回答,我不明白你告诉我的方式。你能给我一个例子,下面的代码?这是我的组件: – gof

+0

@gof是这样的:https://codepen.io/bajzarpa/pen/zwqoOQ –

+0

非常感谢你@ArpadBajzath,我会试试看。 – gof

0

如果你想测试快速和肮脏的东西,fu nction可以从开发人员控制台来访问:

scope = angular.element($0).isolateScope(); 
scope.$ctrl.myFunction(); 

$0是通过使用right click -> Inspect或点击在开发者控制台的元件窗口中的元素中选择的组件集。

欲了解更多信息,请参阅AngularJS angular.element API Reference - jQuery/jqLite Extras