2016-11-30 2 views
1

オンラインクイズを行うためのWebアプリケーションを開発中です。私はこれに平均スタックを使用しています。私のオンラインテストコントローラでは、私はそのようなコントローラー固有のドキュメントイベントリスナーを追加する

document.addEventListener("visibilitychange", onchange); 
document.webkitIsFullScreen etc.. 

など、多くのイベントリスナーを使用していた。しかし、これはグローバルeventLisnersですので、私の問題は、まだ他のコントローラに移動した後に実行し、この機能です。

誰も私にこのための最善のアプローチを提案できますか?

答えて

1

あなたが「他のコントローラに移動した後に」あなたがそれを置くようスコープが破壊されたときにイベントリスナーを削除する必要がありますか:常に

$scope.$on('$destroy',function() { 
    document.removeEventListener('visibilitychange',onchange); 
}); 

そのイベントリスナーの削除を処理するための良いアイデアを特に大きなアプリケーションの場合、単一ページアプリケーションのメモリリークの主な原因になる可能性があるため、コンポーネントは破棄されます。

+0

ありがとうbluetoft。 コントローラーにこのロジックを書き込むことをお勧めしますか? 、またはこれに指示またはサービスを使用することはできますか? –

+0

@kiranGopal私は一般的に、コントローラでこの種のものを配線していますが、このようなことを十分に行っているなら、簡単にサービスを書く方法がわかります。 – bluetoft

関連する問題