2013-02-19 26 views
6

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', 
    ] 
}); 
+0

ちょっとしたコメント:私はあなたのことが遅い理由はわかりませんが、jstreeを使ってディレクトリを再帰的に横断するサーバー側の呼び出しで実行しています - 少なくとも300のファイル、そしてHTMLを返します - そして、 htmlは '$ .each'で始まり、1秒以内に戻ります。私の指摘は、問題は他の場所にあるかもしれないということです。 – user1167442

+0

他のオプションを追加する代わりに、できるだけ速くなるかどうかを確認するために、可能な各オプションを無効にしてみてください。ソート機能を無効にしようとすると、あらかじめソートされているので... –

+0

'' this.get_text''は何をしていますか?多分それは高価な機能ですか? – mitchfuku

答えて

2

jsTreeは、ネイティブ配列sort方法を使用するため、改善することができる唯一のことは、get_textへの呼び出しですが、私はそれがはるかに迅速に得ることができます疑います。

データを事前にソートしている場合は、pluginsコンフィグレーション配列からソートプラグインを削除するだけです。ソートプラグインがデータがすでにソートされていることを「知る」ための方法はなく、プラグインを削除するだけです。

関連する問題