20

$broadcast を rootScope から 1 回送信しますが、リスナー ($on) は 2 回呼び出されます。

リスナーはコントローラー内にあり、$rootScope.$on代わりに を使用し$scope.$onます。誰かがこの問題を抱えていましたか?

編集

ルートスコープ:

$rootScope.$broadcast('menuActivateAction' + item.event_name_postfix, item.event_args);

他のコントローラー:

$rootScope.$on('menuActivateActionPublish', function(event) {});
4

4 に答える 4

31

$rootScope に $on リスナーを登録しているため、コントローラーで破棄されず、次にコントローラーを初期化したときに再度作成されます。

コントローラースコープでリスナーを作成する必要があります

$scope.$on('menuActivateActionPublish', function(event) {});
于 2015-06-23T08:13:01.983 に答える
10

コントローラーの 2 つのインスタンスが 2 つのイベント リスナーを意味し、メソッドが 2 回実行されることを避けるように注意してください !! (例: 'ng-controller' を 2 回使用)

于 2017-09-28T08:30:21.970 に答える