- 履歴一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- AngularJS/イベントリスナを手動で削除する へ行く。
- 1 (2017-12-01 (金) 17:15:32)
キーワード†
- AngularJS
- ディレクティブ
- イベントリスナ
したいこと†
$on()を経由せずエレメントに直接追加したイベントリスナは手動で削除する必要があるっぽいです。
どうやって†
「$destroy」イベントを拾って処理する。
element.on('click', function () { ... }); scope.$on('$destroy', function () { element.off(); });
$rootScopeに登録したリスナも片付ける必要があるようです。
const deregister = $rootScope.$on('anEvent', function () { ... }); scope.$on('$destroy', deregister);
ちなみに†
DataTablesにも同じようなことがあるらしい。