[解決済み】angularJSでブロードキャストイベントの配信を停止する方法。on経由で登録した関数を削除する方法
2022-04-16 15:33:38
質問
on関数を使って$broadcastイベントに対するリスナーを登録しました。
$scope.$on("onViewUpdated", this.callMe);
で、このリスナーを特定のビジネスルールに基づいて登録解除したいのです。しかし、一度登録すると解除することができないのが問題です。
AngularJSには、特定のリスナーの登録を解除する方法はありますか?このイベントの登録を解除する$onのようなメソッド、または$offかもしれません。ビジネスロジックに基づいて、私は言うことができるようにします。
$scope.$off("onViewUpdated", this.callMe);
そして、誰かが "onViewUpdated" イベントをブロードキャストすると、この関数が呼び出されなくなります。
ありがとうございます。
EDIT : 別の関数からリスナーの登録を解除したいのですが。登録した関数ではありません。
どのように解決するのですか?
返された関数を保存し、それを呼び出してイベントの配信を停止する必要があります。
var deregisterListener = $scope.$on("onViewUpdated", callMe);
deregisterListener (); // this will deregister that listener
これは、少なくとも1.0.4では、ソースコード :) にあります。短いので、フルコードを掲載します。
/**
* @param {string} name Event name to listen on.
* @param {function(event)} listener Function to call when the event is emitted.
* @returns {function()} Returns a deregistration function for this listener.
*/
$on: function(name, listener) {
var namedListeners = this.$$listeners[name];
if (!namedListeners) {
this.$$listeners[name] = namedListeners = [];
}
namedListeners.push(listener);
return function() {
namedListeners[indexOf(namedListeners, listener)] = null;
};
},
また、以下を参照してください。 ドキュメント .
関連
-
[解決済み] AngularJSの.$uibModalとは何ですか?
-
[解決済み] AngularJSでkeypressイベントを使用するには?
-
[解決済み] ng-pattern` - 数字だけをチェックする方法は?
-
処理されない例外が発生しました。Angular 実行中のプロジェクトで NGCC に失敗しました。
-
[解決済み] AngularJSでデータバインディングはどのように機能するのですか?
-
[解決済み] AngularJSを使用して、ブラウザのコンソールで$scope変数にアクセスするにはどうすればよいですか?
-
[解決済み] AngularJSで$scope.$watchと$scope.$applyを使用するにはどうすればよいですか?
-
[解決済み] AngularJSでチェックボックスの値のリストにバインドするにはどうすればいいですか?
-
[解決済み】AngularJS - $destroyは、イベントリスナーを削除しますか?
-
[解決済み] AngularJSに "更新 "を指示するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ページロード時にAngularJSのコントローラ関数を実行する方法は?
-
[解決済み] AngularJSの.$uibModalとは何ですか?
-
[解決済み] Angular 1.2+ で ng-bind-html-unsafe を複製するために $sce.trustAsHtml(string) を使用するにはどうしたらよいですか?
-
[解決済み] シンプルなangularjsの日付入力
-
[解決済み] AngularJSのリソースプロミス
-
[解決済み] createspyとcreatespyobjの違いは何ですか?
-
AngularJSのベストプラクティス。ng-repeatの$indexに注意する。
-
[解決済み] Angularjsを使用してローカルストレージにデータを保存するにはどうすればよいですか?
-
[解決済み] 条件に応じて特定のルートにリダイレクトする機能
-
[解決済み] AngularJSでコントローラ間の通信を行う正しい方法は何ですか?