2013-02-19 12 views
6

Sto scrivendo un'estensione Chrome per i segnalibri Delicious. Il mio file background.js recupera i segnalibri sul browser aperto e crea l'oggetto richiesto per jsTree per costruire un albero corretto.funzione di ordinamento jsTree incredibilmente lento

Se rendo invalido plug sorta di jsTree, i segnalibri appaiono immediatamente quando clicco il popup. Se abilito la funzione di ordinamento c'è un ritardo di ~ 2 secondi tra il clic e la visualizzazione dei dati.

ho cercato di preselezione tutti i miei dati nello script di sfondo e di passarlo al pop-up pre-ordinato, ma jsTree non onorare questo dati ordinati.

ho solo ~ 90 ~ tag e 400 segnalibri. Esiste un'opzione di configurazione che posso usare per rendere più veloce questo? Ecco come appare il mio 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

Solo un commento: non so il motivo per cui la vostra è lento, ma sto facendo funzionare jstree con una chiamata lato server che attraversa una directory ricorsivamente - almeno 300 file, e restituisce il codice html - e poi ho il ciclo di tutti l'html con '$ .each' e ritorna in meno di un secondo. Il mio punto è che il problema potrebbe risiedere altrove. – user1167442

+0

Invece di aggiungere altre opzioni, prova a disattivare ogni opzione che puoi, solo per vedere se diventa più veloce ... ad es. prova a disabilitare la funzione di ordinamento, dal momento che hai pre-ordinato ... –

+0

cosa sta facendo '' this.get_text''? forse questa è la funzione costosa? – mitchfuku

risposta

2

jsTree utilizza il metodo nativo matrice sort, quindi l'unica cosa che può essere migliorata è le chiamate a get_text, ma dubito che si può ottenere molto più veloce.

Se hai i dati presorted - è sufficiente rimuovere il plugin sorta dal vostro allineamento plugins config. Non c'è modo per il plugin di ordinamento di "sapere" che i dati sono già ordinati, basta rimuovere il plugin.

Problemi correlati