我有一个搜索控制器,用户可以在其中搜索单个区域。 搜索一个区域后,我$ rootScope。$广播该区域已经改变。
我有各种其他控制器负责独立加载和显示有关该区域的数据。他们使用$ rootScope。$ on,并使用$ http从其他来源获取额外信息。
我的方法是正常的做事方式吗?这感觉很不寻常,因为在我经历的教程中没有提到$ broadcast。
我正在努力学习角色。
答案 0 :(得分:2)
$ emit / $ broadcast在角度库甚至第三方中经常使用。
例如,当使用ng-route模块导航时会发生事件,$ routeChangeStart,$ routeChangeSuccess,...同样适用于第三方ui-router:$ stateChangeStart,$ stateChangeSuccess,....
它只是一个事件总线:监听和发送事件以便与外部组件通信。
在angularJS中,您可以在文档的事件部分找到它们。
但是,您应该小心处理事件,其中太多可能会导致您无法控制您的代码正在执行的操作,或者能够告诉应用程序的当前状态。
对于某些人来说,更简洁的做法是在$ rootScope / a服务中使用$ watch来监控数据。
编辑:我没有提到它,但是不建议在$ rootScope中存储数据用于设计/可重用性。故障目的。