2

コントローラーで動作していたコードがいくつかあります。その機能をサービスにリファクタリングして移動しました。コードにはイベント リスナーがありました。

$rootScope.$on( .....)

これは、コントローラー内にあるときにキャッチされましたが、サービス内ではイベントをキャッチしません。と を使用$rootScope.$broadcast()$rootScope.$emit()てイベントを通知しようとしましたが、どちらもサービスに巻き込まれません。

サービス コードに特別なことはありません。

heartbeatService.$inject = [ '$rootScope', 'vcapChanService', 'eventService', 'logger' ];
function heartbeatService( $rootScope, vcapChanService, eventService, logger ) {
    //....
}

質問: ルート スコープでイベントをキャッチするサービスを取得するにはどうすればよいですか?

詳細情報を編集: イベントは別のサービスから通知されます。また、このイベントは他のコントローラーでキャッチされますが、別のサービスではキャッチされません。サービス/ファクトリー、エミット/ブロードキャストなどのすべてのバリエーションを試しましたが、どれも機能しません。サービスはイベントをキャッチしませんが、他のすべての点で完全に機能します.

4

1 に答える 1