一尘不染

AngularJS中模块之间的通信

angularjs

我想可能有许多角度模块连接到一个shellpage中的不同区域。但是AngularJS中的模块可以彼此“交谈”吗?如果是,怎么办?


阅读 308

收藏
2020-07-04

共1个答案

一尘不染

模块可以通过多种方式进行交互或共享信息

  1. 可以将一个模块注入另一个模块,在这种情况下,容器模块可以访问已注入模块的所有元素。如果您查看有角的种子项目,则会为指令,控制器,过滤器等创建模块,就像这样

angular.module(“ myApp”,[“ myApp.filters”,“ myApp.services”,“
myApp.directives”,“ myApp.controllers”])这更多是一种可重用性机制,而不是通信机制。

  1. 第二个选项是@Eduard解释的,那就是使用服务。由于服务是单例的并且可以注入到任何控制器中,因此它们可以充当通信机制。

  2. 正如@Eduard再次指出的那样,第三个选项是使用带有$ scope对象的父控制器,因为它对所有子控制器均可用。

  3. 您还可以将$ rootScope注入需要交互的控制器中,并使用$ broadcast和$ on方法创建服务总线模式,其中控制器使用pub \ sub机制进行交互。

我倾向于第四选择。也可以在此处查看更多详细信息。AngularJS中的控制器之间进行通信的正确方法是什么?

2020-07-04