Angular使用回调与使用broadcast / emit / on范例

时间:2014-03-10 12:48:54

标签: angularjs angularjs-scope

我的问题是关于使用更直接的回调结构与事件广播和收听之间的最佳实践。我没有使用broadcast / emit / on事件传播框架。相反,当一个已知事件发生时(在事件的源头),我一直在创建一个回调寄存器并触发注册的回调。这一切都是通过服务完成的。

广播/发射/开启范例的效率如何?我应该使用它吗?它是否与回调类型的结构一样有效?

感谢。

2 个答案:

答案 0 :(得分:5)

这不是效率问题,而是可维护性问题。当您使用emit和broadcast时,您正在将您的机制与视图进行通信,因为$scope基本上是数据绑定的结构。服务方法更易于维护,因为您可以在不调整范围的情况下测试通信,并且除了控制器之外还可以在服务之间进行通信。使用$scope $broadcast$emit,您只能在可以注入$scope的地方进行通信。

答案 1 :(得分:2)

经过一年多的时间开发带有角度的移动应用程序,我想说的是:这不是使用服务的问题。关于设计服务与控制器(或其他服务)之间的通信的最佳方法是一个问题。简而言之,基于回调或基于承诺的通信和事件消息传递都有作用。如果您确信侦听器在广播时可以接收消息,则事件消息很棒。一般来说,事件消息和事件监听器"感觉"像一个更清洁,更可维护的范例。但是,如果我有一个控制器要去"请求"来自服务的一些数据,我通过Promises(或者如果你愿意,可以回调)在这些情况下更清晰。