2012-11-22 86 views
6

我使用jsTree(1.0-rc3)與選項加載數據的AJAX和我有一個問題,加載約〜2000個孩子節點。雖然服務器在幾秒鐘內響應,但只需約jsTree在瀏覽器中呈現結果(chrome,FF)即可。除此之外,FF還會返回有關'jquery-1.7.2.min.js'沒有響應的信息。同樣數量的數據會凍結IE。它是否過載了數據?或者它是一種錯誤?是否有任何可改變的因素,可以幫助我更快地渲染?jsTree - 渲染優化|很長的渲染與2000個節點

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

肯定jstree如果低迷的演示,甚至有3/4的節點......我可以」不要想象你用2K的經驗... BTW在HTML5中應該是可行的。也許用簡單的類切換(摺疊/展開)和DOM操作作爲最後的手段 – CapelliC

回答

2

你試過了嗎?

  • progressive_render

    progressive_render 一個布爾。默認爲false。 如果此選項設置爲true,則只有返回JSON的可見(開放節點)部分轉換爲DOM節點,所有隱藏部分都將被保存並按需分析(當節點變爲可見時)。當你有一個大的嵌套的樹狀結構,這將導致一個沉重的DOM這是非常有用

  • AJAX裝載