DeliciousブックマークのChrome拡張機能を書いています。私のbackground.jsファイルは、ブラウザ上のブックマークを取り出し、適切なツリーを構築するためにjsTreeに必要なオブジェクトを作成します。jsTreeソート機能がばかげて遅い
jsTreeの並べ替えプラグインを無効にすると、ポップアップをクリックするとすぐにブックマークが表示されます。ソート機能を有効にすると、データのクリックと表示の間に約2秒の遅延があります。
バックグラウンドスクリプトですべてのデータを事前にソートしてポップアップにあらかじめソートしましたが、jsTreeはこのソートされたデータを尊重しません。
私は約90のタグと〜400のブックマークしか持っていません。これをより速くするために使用できる設定オプションはありますか?ここに私のjsTreeの外観があります。
$('#jstree').jstree({
'close_all': -1,
'core': {
'animation': 0
},
'json_data': {
'async': true,
'data': data
},
'progressive_render': true,
'themes': {
'theme': 'classic',
'dots': false,
'icons': true
},
'sort': function (a, b) {
return this.get_text(a) > this.get_text(b) ? 1 : -1;
},
'types': {
'valid_children': [ 'folder' ],
'types': {
'folder': {
'valid_children': [ 'file' ],
'max_depth': 1
},
}
},
'plugins': [
'json_data',
'themes',
'sort',
'types',
]
});
ちょっとしたコメント:私はあなたのことが遅い理由はわかりませんが、jstreeを使ってディレクトリを再帰的に横断するサーバー側の呼び出しで実行しています - 少なくとも300のファイル、そしてHTMLを返します - そして、 htmlは '$ .each'で始まり、1秒以内に戻ります。私の指摘は、問題は他の場所にあるかもしれないということです。 – user1167442
他のオプションを追加する代わりに、できるだけ速くなるかどうかを確認するために、可能な各オプションを無効にしてみてください。ソート機能を無効にしようとすると、あらかじめソートされているので... –
'' this.get_text''は何をしていますか?多分それは高価な機能ですか? – mitchfuku