$broadcast
とのパフォーマンスの違いが$emit
なくなった今、$scope.$emit
を優先する理由はありますか$rootScope.$broadcast
?
はい、違います。
$emit
スコープ階層 (上向き) に制限されます。これは、設計に適合する場合は良いことかもしれませんが、かなり恣意的な制限であるように思われます。
$rootScope.$broadcast
イベントを聴くことを選択したすべての人に適用されるので、私にとってはより合理的な制限です。
何か見逃しているのでしょうか?
編集:
回答への返答として明確にしておくと、ディスパッチの方向は私が求めている問題ではありません。$scope.$emit
はイベントを上向きにディスパッチし、 - 下向きにディスパッチします。 しかし、すべての対象リスナーに到達するために$scope.$broadcast
常に を使用しないのはなぜでしょうか?$rootScope.$broadcast
ベストアンサー1
tl;dr (このtl;drはえむの答えは下記にあります)
$emit
イベントを上向きにディスパッチします...$broadcast
イベントを下向きにディスパッチします
詳しい説明
$rootScope.$emit
他のリスナーだけが$rootScope
聞き取れるようにします。これは、全員に聞き取ってほしくない場合に適しています$scope
。主に高レベルのコミュニケーションです。子供に聞こえないように大人が部屋の中でお互いに話しているのを想像してください。
$rootScope.$broadcast
ほぼすべての人に聞こえる方法です。これは、夕食の準備ができたと親が叫んで、家中の人に聞こえるのと同じことです。
$scope.$emit
$scope
親全員にその出来事を聞いてもらいたいときです$rootScope
。これは、子供が家で親に泣き言を言っているときです(ただし、他の子供が聞いている食料品店ではありません)。
$scope.$broadcast
は自分自身と子供たちのためのものです$scope
。これは、親に聞こえないようにぬいぐるみにささやく子供です。