コントローラーで動作していたコードがいくつかあります。その機能をサービスにリファクタリングして移動しました。コードにはイベント リスナーがありました。
$rootScope.$on( .....)
これは、コントローラー内にあるときにキャッチされましたが、サービス内ではイベントをキャッチしません。と を使用$rootScope.$broadcast()
し$rootScope.$emit()
てイベントを通知しようとしましたが、どちらもサービスに巻き込まれません。
サービス コードに特別なことはありません。
heartbeatService.$inject = [ '$rootScope', 'vcapChanService', 'eventService', 'logger' ];
function heartbeatService( $rootScope, vcapChanService, eventService, logger ) {
//....
}
質問: ルート スコープでイベントをキャッチするサービスを取得するにはどうすればよいですか?
詳細情報を編集: イベントは別のサービスから通知されます。また、このイベントは他のコントローラーでキャッチされますが、別のサービスではキャッチされません。サービス/ファクトリー、エミット/ブロードキャストなどのすべてのバリエーションを試しましたが、どれも機能しません。サービスはイベントをキャッチしませんが、他のすべての点で完全に機能します.