私たちがangularJs $ compileをデータテーブルcreatedRow()で使用した場合に気付いたことがあります reload reloadDataがnumburの分離ウォッチャーと無人DOM stuff
使用のページネーションはpaginationsでこのbecouseがcreatedRowを実行したDataTable成長している場合でも()
それは行が前createdRowsに入力して、このビッグメモリリークを避けるコンパイル前の$を破壊することは可能ですか?
私たちは、データリンク可能な行をいくつかのやりとりでng-clickとしてレンダリングするので、angularJs $ compileを使用します。これは、コントローラの$ scope内の関数とのやりとりを必要とします。
申し訳ありませんが、私の英語
してくださいあなたは、代替のアイデアを知っているか解決策は、私に知らせます。
ご協力いただきありがとうございます。
詳細についてはEDITED: 助けを借りてありがとうscipper。
私は、問題についての時間の多くをこのテストを追加し、まだそのメモリリーク解放することはできません。この例で多くの時間再レンダリングした場合
http://l-lin.github.io/angular-datatables/archives/#!/rerender
:
は、この例で始まりますそして何のメモリは
**をリークしていない。しかし、私のバージョンでは、私はこのようにreloadDataを使用します**
$scope.dtOptionsMyTable = DTOptionsBuilder.newOptions()
.withOption('ajax', function(){........})
.withOption('createdRow', function (row, data, dataIndex) {
$compile(angular.element(row).contents())($scope);
})
そして、なぜ私たちはリークメモリの使用を増やしているのか分かりません。ごみコーラはすべてを取り除かない。
メモリ内のこれらの要素をすべて削除するにはどうすればよいですか?
私はすべてのリロードでこれを試してみてください。
instanceTable.DataTable.clear();
はさえ、私たちは、私はすべてでこれを試すこの
$compile(angular.element(row).contents())($scope);
の別の子オブジェクトinteadでコンパイルしようとリロード
VAR newCreatedChildScope = $スコープ$新しい(偽)。 $ compile(angle.element(row).contents())(newCreatedChildScope);
、その後、すべての中でこのようまだ
newCreatedChildScope.$destroy();
newCreatedChildScope=null;
メモリリークの多くchildscopeを破壊リロード。
instance.DataTable参照を使用する方法は、データをリロードする前にテーブルをもっと破壊する方法ですか?私はこれが
おかげ
私のアプリにも同じ問題があるようです。どのようにメモリリークを検出しますか? – duckegg