コントローラーの上に $rootScope.$on コードがあります。このコントローラーをロード/呼び出すたびに、 $rootScope.$on リスナーが増加することに気付きました。つまり、コントローラーにアクセスすると、無期限にリスナーが追加され、追加され、追加されます。
別のコントローラーから $rootScope.$emit を介して呼び出すと、$rootScope.$on 内の関数が単一のエミット/ブロードキャストであっても複数回実行されることに気付きました。
$rootScope.$on('listen', function() {
$scope.displayString();
});
$scope.displayString = function() {
console.log('test'); // This display 7 times because I visit the controller 7 times
}
リスナーが既に存在する場合に新しいリスナーを作成しないように、別のリスナーインスタンスを作成しないようにすることは可能ですか?