200 ~ 300 行のテーブルをレンダリングする Ember アプリケーションがあります。Tablesorter のような機能を実装しようとしましたが、パフォーマンスが非常に低下しました。
アプリケーションの関連部分の概要は次のとおりです。オブジェクトのコレクション、ArrayController
およびがありCollectionView
ます。CollectionView#content
にバインドされ、プロパティArrayController#arrangedContent
を設定することでソートが行われArrayController#sortProperties
ます。
便宜上、JS フィドルをセットアップしました: http://jsfiddle.net/496tT/1/。JS コンソールの Chrome では、生の並べ替えに約 5 ミリ秒、テーブルの並べ替えに約 1000 ミリ秒かかることがわかります。
私の現在の実装では、EmberarrangedContent
は更新時にすべてのビューを再レンダリングします。アイテムビューをソートすることでソートが高速化される可能性があるCollectionView
ため、ビューを適切な順序でDOMに効果的に再接続できると思います。しかし、Ember.js でこれを適切に行う方法がわかりません。
何かご意見は?
PS — SO には重複があります — https://stackoverflow.com/questions/12915647/table-sort-with-emberjs-clear-and-rebuild-the-table — しかし、答えはありません。この質問では、便宜上フィドルを設定しました。