0

これは非常に一般的な問題だと思います。次のようなルートを考えてみましょう

$routeProvider
        .when('/producer', {
            templateUrl: 'ui/producer.html',
            controller: 'ProducerCtrl'
        })
        .when('/consumer', {
            templateUrl: 'ui/consumer.html',
            controller: 'ConsumerCtrl'
        })

$scope ライフサイクルに関する私の理解から、ルーティングが発生するたびに、新しいスコープ/コントローラーが作成および初期化され、古いスコープ/コントローラーは終了します。これにより、特定の時点でプロデューサーまたはコンシューマーコントローラーのいずれかがアクティブになりますが、両方がアクティブになるわけではありません。これは、angular Batarang を使用して観察しました。その結果、プロデューサーからコンシューマーに、またはその逆にイベントを送信できません。

イベントはコントローラー間の通信用に設計されているため、これは非常に消費量が多くなります。または、コントローラーとディレクティブの間でのみ機能しますか?

私は何かが恋しいと確信しています。デザインがこのようなものだったなんて信じられません。

更新: 解決策は、rootScope のみですべてのイベントを起動/リッスンしています。機能します。しかし、angularjsがこのように設計するつもりであることを知りたいです。

4

1 に答える 1

1

この質問を確認する必要があります: あるコントローラーは別のコントローラーを呼び出すことができますか?

基本的に、rootScope を使用する代わりにサービスを使用することがベスト プラクティスのようです。

于 2013-09-13T06:02:47.800 に答える