開始行: * キーワード [#neacf127] - AngularJS - ディレクティブ - イベントリスナ * したいこと [#d19b9598] $on()を経由せずエレメントに直接追加したイベントリスナは手... * どうやって [#ze5953ef] 「$destroy」イベントを拾って処理する。 element.on('click', function () { ... }); scope.$on('$destroy', function () { element.off(); }); $rootScopeに登録したリスナも片付ける必要があるようです。 const deregister = $rootScope.$on('anEvent', function () { ... }); scope.$on('$destroy', deregister); $timeoutでペンディング中のものもキャンセルするべきみたい。 const timer = $timeout(function () { ... }, 60000); scope.$on('$destroy', function () { $timeout.cancel(timer); }); * ちなみに [#n1b472ef] DataTablesにも同じようなことがあるらしい。 * 参考 [#laead680] - [[memory leaks - AngularJS - Does $destroy remove event... - [[Possible memory leak when refreshing table - DataTabl... 終了行: * キーワード [#neacf127] - AngularJS - ディレクティブ - イベントリスナ * したいこと [#d19b9598] $on()を経由せずエレメントに直接追加したイベントリスナは手... * どうやって [#ze5953ef] 「$destroy」イベントを拾って処理する。 element.on('click', function () { ... }); scope.$on('$destroy', function () { element.off(); }); $rootScopeに登録したリスナも片付ける必要があるようです。 const deregister = $rootScope.$on('anEvent', function () { ... }); scope.$on('$destroy', deregister); $timeoutでペンディング中のものもキャンセルするべきみたい。 const timer = $timeout(function () { ... }, 60000); scope.$on('$destroy', function () { $timeout.cancel(timer); }); * ちなみに [#n1b472ef] DataTablesにも同じようなことがあるらしい。 * 参考 [#laead680] - [[memory leaks - AngularJS - Does $destroy remove event... - [[Possible memory leak when refreshing table - DataTabl... ページ名: