これは非常に一般的な問題だと思います。次のようなルートを考えてみましょう
$routeProvider
.when('/producer', {
templateUrl: 'ui/producer.html',
controller: 'ProducerCtrl'
})
.when('/consumer', {
templateUrl: 'ui/consumer.html',
controller: 'ConsumerCtrl'
})
$scope ライフサイクルに関する私の理解から、ルーティングが発生するたびに、新しいスコープ/コントローラーが作成および初期化され、古いスコープ/コントローラーは終了します。これにより、特定の時点でプロデューサーまたはコンシューマーコントローラーのいずれかがアクティブになりますが、両方がアクティブになるわけではありません。これは、angular Batarang を使用して観察しました。その結果、プロデューサーからコンシューマーに、またはその逆にイベントを送信できません。
イベントはコントローラー間の通信用に設計されているため、これは非常に消費量が多くなります。または、コントローラーとディレクティブの間でのみ機能しますか?
私は何かが恋しいと確信しています。デザインがこのようなものだったなんて信じられません。
更新: 解決策は、rootScope のみですべてのイベントを起動/リッスンしています。機能します。しかし、angularjsがこのように設計するつもりであることを知りたいです。