在angularjs中使用$ broadcast是否正常?

时间:2016-04-21 11:16:11

标签: angularjs

我有一个搜索控制器,用户可以在其中搜索单个区域。 搜索一个区域后,我$ rootScope。$广播该区域已经改变。

我有各种其他控制器负责独立加载和显示有关该区域的数据。他们使用$ rootScope。$ on,并使用$ http从其他来源获取额外信息。

我的方法是正常的做事方式吗?这感觉很不寻常,因为在我经历的教程中没有提到$ broadcast。

我正在努力学习角色。

1 个答案:

答案 0 :(得分:2)

$ emit / $ broadcast在角度库甚至第三方中经常使用。

例如,当使用ng-route模块导航时会发生事件,$ routeChangeStart,$ routeChangeSuccess,...同样适用于第三方ui-router:$ stateChangeStart,$ stateChangeSuccess,....

它只是一个事件总线:监听和发送事件以便与外部组件通信。

在angularJS中,您可以在文档的事件部分找到它们。

但是,您应该小心处理事件,其中太多可能会导致您无法控制您的代码正在执行的操作,或者能够告诉应用程序的当前状态。

对于某些人来说,更简洁的做法是在$ rootScope / a服务中使用$ watch来监控数据。

编辑:我没有提到它,但是不建议在$ rootScope中存储数据用于设计/可重用性。故障目的。