问题

现在, $ broadcast $ emit 之间的性能差异已经消除,是否有任何理由喜欢 $ scope.$ emit $ rootScope.$ broadcast ?

他们是不同的,是的.

$ emit 只限于范围层次结构(向上) - 这可能是好的,如果它适合你的设计,但在我看来是一个相当任意的限制.

$ rootScope.$ broadcast 适用于所有选择以聆听活动,这是我心目中更为明智的限制.

我错过了什么?

编辑:

为了回答一个答案,调度的方向不是我的问题. $ scope.$ emit 向上调度事件, $ scope.$ broadcast - 向下调用.但为什么不总是使用 $ rootScope.$ broadcast 来覆盖所有预期的侦听器?



解决方法

tl; dr (此tl; dr来自 @ sp00m ' s answer以下)

$emit dispatches an event upwards ... $broadcast dispatches an event downwards

详细说明

$ rootScope.$ emit 只让其他 $ rootScope 监听器捕获它.这是好的,当你不想每个 $ scope 得到它.主要是高层次的沟通.想想它是成年人在房间里互相交谈,所以孩子们听不到他们.

$ rootScope.$ broadcast 是一种几乎可以听到的方法.这等于父母大吼大叫,晚饭已经准备好,所以房子里的每个人都听到了.

$ scope.$ emit 是当你想要 $ scope 及其所有父项和 $ rootScope 这是一个孩子在家里向父母打电话(但不是在杂货店,其他孩子可以听到).

$ scope.$ broadcast 用于 $ scope 本身及其子元素.这是一个孩子对其毛绒动物说话,所以他们的父母听不到.




相关问题推荐