これが私の問題を示すplunkrです(コンソールを開く必要があります)。試してみるには?
- モーダル表示を 2 回クリックします。
通知ボタンをクリックします。次に、コンソールには次のように表示されます。
Notification broadcasted. example.js:44 2 Notification received.
つまり、通知が 2 回受信されます。これは、モーダルのコントローラーが open() ごとに呼び出されるためです。私の問題は、モーダルに対して一度だけ呼び出されたいということです。$on() が登録解除関数を返すことは知っていますが、私のアプリではかなりの数のイベントが登録されており、モーダルが閉じられるたびにそれらを登録解除したくありません。ダイアログ自体を操作する必要があるため、 $on() を他の場所に置くこともできません。モーダル ダイアログごとに $scope イベントを 1 回だけ登録する簡単な方法はありませんか?