$rootScope.$broadcast と $scope.$emit の比較 質問する

$rootScope.$broadcast と $scope.$emit の比較 質問する

$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。これは、親に聞こえないようにぬいぐるみにささやく子供です。

おすすめ記事