这个问题换一种说法就是,如何在平级界面模块间进行通信。有两种方法,一种是共用服务,一种是基于事件。
在 Angular 中,通过 factory 可以生成一个单例对象,在需要通信的模块 a 和 b 中注入这个对象即可。
这个又分两种方式
第一种是借助父 controller。在子 controller 中向父 controller 触发($emit
)一个事件,然后在父 controller 中监听($on
)事件,再广播($broadcast
)给子 controller ,这样通过事件携带的参数,实现了数据经过父 controller,在同级 controller 之间传播。
第二种是借助 $rootScope
。每个 Angular 应用默认有一个根作用域 $rootScope
, 根作用域位于最顶层,从它往下挂着各级作用域。所以,如果子控制器直接使用 $rootScope
广播和接收事件,那么就可实现同级之间的通信。