2012-11-22 13 views
6

Sto usando jsTree (1.0-rc3) con l'opzione di caricare i dati da parte di AJAX e ho un problema con il caricamento di circa 2000 nodi childs da esso. Mentre il server risponde in pochi secondi, richiede jsTree circa ~ 40 secondi solo per visualizzare i risultati nel browser (chrome, FF). In aggiunta a ciò, FF restituisce informazioni sulla mancata risposta da "jquery-1.7.2.min.js". La stessa quantità di dati blocca IE. È sovraccarico di dati? O è una specie di bug? Ci sono dei fattori modificabili, che possono aiutarmi con il rendering più veloce?jsTree - ottimizzazione del rendering | rendering molto lungo con 2000 nodi

jQuery("#dependency-tree").jstree(
     { 
      'plugins':['themes', 'json_data', 'ui', 'core', 'types', 'sort'], 
      "json_data":{ 
       "progressive_render": true, 
       "data":initData, 
       cache:false, 
       "ajax":{ 
        "url":function (node) 
        { 
         return appContext + 'GetUnitsNode/' 
          + node.attr('id'); 
        }, 
        dataType:"text", 
        "success":function (data) 
        { 
         if (data == "none") 
         { 
          return false; 
         } 
         return jQuery.parseJSON(data); 
        } 
       } 
      }, 
      "ui":{ 
       'select_limit':1 
      }, 
      "core":{ 
       'animation':0, 
       'html_titles':true 
      }, 
      "themes":{ 
       "theme":"rules", 
       "dots":true, 
       "icons":true 
      }, 
      "types":{ 
       "types":{ 
        "default":{ 
         "icon":{ 
          "image":appContext + "/img/orange.png" 
         } 
        } 
       } 
      }, 
      "sort":function (a, b) 
      { 
       return this.get_text(a).toUpperCase() > this.get_text(b).toUpperCase() ? 1 : -1; 
      } 
     }).bind("select_node.jstree", function (event, data) 
     { 
      submitedNodeId = data.rslt.obj.attr('id'); 
      submitedNodeTypeId = data.rslt.obj.attr("typeId"); 
      submitedNodeLast = data.inst.is_leaf(data.rslt.obj); 
      g_node_text = jQuery(data.rslt.obj).children().eq(1).html(); 
     }); 
+0

sicuramente la demo di jstree se lenta, anche con 3/4 nodi ... che posso' Immagina la tua esperienza con 2K ... BTW farlo in HTML5 dovrebbe essere fattibile. Forse con la semplice commutazione di classe (piegata/spiegata) e la manipolazione del DOM come ultima risorsa – CapelliC

risposta

2

Hai provato?

  • progressive_render

    progressive_render booleano. Il valore predefinito è falso. Se questa opzione è impostata su true, solo le parti visibili (nodi aperti) del JSON restituito vengono convertite in nodi DOM, le parti nascoste vengono salvate e analizzate ondemand (quando un nodo diventa visibile). Questo è utile quando si dispone di un grande albero nidificato che si tradurrebbe in un DOM pesante

  • AJAX carico

Problemi correlati