2013-09-22 64 views
3

我已经做了剑道UI树与外部JSON文件使用JSON速度问题剑道UI树状

这是工作的罚款,如果我有以防万一200

节点,但它正在采取太多的时间,如果我有大量数据

检查这个http://infinitelyinfinite.com/treeview/

这里是我的jQuery代码

$.getJSON("/testTree.json", function (data) { 
    $("#treeview").kendoTreeView({ 
     dataSource: data 
    }); 
}) 

这里是我JSON文件

[ 
    { 
     "id" :100, 
     "text" :"Region", 
     "items":[ 
      { 
       "id" :1, 
       "text" :"Asia", 
       "parent_id" :100, 
       "items":[ 
        { 
         "id" :2, 
         "text" :"Central Asia", 
         "parent_id" :1, 
         "items":[ 
          { 
           "id" :3, 
           "text":"Afghanistan", 
           "parent_id" :2, 
          }, 
          { 
           "id" :4, 
           "text":"Azerbaijan", 
           "parent_id" :2, 
          } 
         ] 
        }, 
        { 
         "id" :5, 
         "text" :"East Asia", 
         "parent_id" : 1, 
         "items":[ 
          { 
           "id" :6, 
           "text":"China" 
          } 
         ] 
        } 
       ] 
      }, 
      { 
       "id" :7, 
       "text" :"Europe", 
       "parent_id" :100, 
       "items":[ 
        { 
         "id" :8, 
         "text" :"Central Europe", 
         "parent_id" :7, 
         "items":[ 
          { 
           "id" :9, 
           "text" :"Austria", 
           "parent_id" :8, 
           "items":[ 
            { 
             "id" :10, 
             "parent_id" :9, 
             "text":"Carinthia" 
            } 
           ] 
          }, 
          { 
           "id" :11, 
           "text" :"Czech Republic", 
           "parent_id" :8, 
           "items":[ 
            { 
             "id" :12, 
             "text":"Carinthia", 
             "parent_id" :11, 
            } 
           ] 
          } 
         ] 
        } 
       ] 
      } 
     ] 
    } 
] 

有没有什么办法让它快速的样品??? 它正在采取一些时间三,四十岁

+0

您是否需要一次加载完整的树?你能找回第一大洲,地区,国家......吗?这将允许发送只需要的数据和HTML渲染将更快。 – OnaBai

+0

@Onbai不,我不想一次加载完整的树,你可以从这里下载我的json文件[http://infinitelyinfinite.com/treeview/js/region_tree.json](http://infinitelyinfinite.com/treeview/ js/region_tree.json) –

回答

3

你的代码更改为:

$.getJSON("/testTree.json", function (data) { 
    $("#treeview").kendoTreeView({ 
     dataSource: { 
      data : data 
     } 
    }); 
}); 

从一个对象,而不是从一个数组初始化数据源似乎要快得多。

在你的网站(一些小的清洗后)将读取的代码:

<head> 
    <title> Json Tree</title> 
    <link href="styles/kendo.common.min.css" rel="stylesheet"/> 
    <link href="styles/kendo.default.min.css" rel="stylesheet"/> 
    <script src="js/jquery.min.js"></script> 
    <script src="js/kendo.all.min.js"></script> 
</head> 

<div class="demo-section" style="float:left;"> 
    <h3 class="title">Select Continents</h3> 

    <div id="treeview" class="demo-section"></div> 
</div> 
<body> 
<script type="text/javascript" charset=utf-8> 
    // $(document).ready(function() { 
    $.getJSON("/js/region_tree.json", function (data) { 
     $("#treeview").kendoTreeView({ 
      dataSource : { 
       data: data 
      }, 
      dataTextField : "text", 
      dataValueField: "id" 
     }); 
    }); 

    // }); 
</script> 
</body> 

你也可以这样做:

<script type="text/javascript" charset=utf-8> 
    $(document).ready(function() { 
     var tree = $("#treeview").kendoTreeView({ 
      dataTextField : "text", 
      dataValueField: "id" 
     }).data("kendoTreeView"); 

     $.getJSON("/js/region_tree.json", function (data) { 
      tree.dataSource.data(data); 
     }); 
    }); 
</script> 

凡使用getJSON我直接分配读JSON后它到树的dataSource

+0

我想要这个文件,如果你不介意,我可以使用相同的逻辑在多重选择在剑道UI? bdw非常感谢你是人生救世主.... :) –

+0

你想要什么样的文件? AFAIK,这实际上没有记录,但是我在与您一起“播放”大量数据时发现了一些内容。这可能是由于数据源中的对象数组和对象造成的某种副作用。但是,这是只有KendoUI开发人员才能回答的问题... – OnaBai

+0

我可以使用'kendoMultiSelect'的同一个概念吗?我也想从json文件搜索所以..? –