起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3371|回复: 6

[结贴] 树展开慢是什么原因

[复制链接]

42

主题

162

帖子

672

积分

高级会员

Rank: 4

积分
672
QQ
发表于 2017-8-16 10:06:02 | 显示全部楼层 |阅读模式
树结构的数据全展开速度很慢是什么造成的??有没有解决办法,,展开用的是expandAll()方法
发表于 2017-8-16 15:08:25 | 显示全部楼层
数据数据量多的话!树的渲染本来就慢! 如果一次性全部显示数据比较多,这个没法再优化了
建议不要全部展开!应该使用延迟加载的方式显示!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

90

主题

333

帖子

896

积分

高级会员

Rank: 4

积分
896
QQ
发表于 2017-8-16 16:04:54 | 显示全部楼层
liangyongfei 发表于 2017-8-16 15:08
数据数据量多的话!树的渲染本来就慢! 如果一次性全部显示数据比较多,这个没法再优化了
建议不要全部展 ...

1000多个树节点让客户领导去点开查看,这个我们也没办法交差啊。或者不展开,哪怕加载慢点,全加载呢?
回复 支持 反对

使用道具 举报

发表于 2017-8-16 17:44:31 | 显示全部楼层
reoyha 发表于 2017-8-16 16:04
1000多个树节点让客户领导去点开查看,这个我们也没办法交差啊。或者不展开,哪怕加载慢点,全加载呢? ...

全加载就会全渲染!  只能是延迟宣传才行!
一次性请求数据!但是不要一次性加载到data组件中!可以延迟加载到data组件中!
我这里有一点类似的代码!你可以参考
  1.         //参数传递进去的是json ,返回也是json,加载数据需要获取的是json.rows
  2.         Model.prototype.getChildJsonByParentID =  function(parentID,dataJson){
  3.                 var json = $.extend(true,{},dataJson);
  4.                 var rows = json.rows;
  5.                 //如果当前行的子的行对象存在,
  6.                 if(rows){
  7.                         if(parentID){
  8.                                 //递归寻找parentID的所有子
  9.                                 for(var row in rows){
  10.                                         //目前已经找到子对象数组,就不用再找了
  11.                                         if(this.isFindChildRows){
  12.                                                 break;
  13.                                         }
  14.                                          //如果当前行的id就是就是父ID,就找到子的json对象返回。否则递归子去寻找
  15.                                         if(rows[row].id.value == parentID){
  16.                                                 json = this.getChildJsonByParentID(null,rows[row]);
  17.                                                 this.isFindChildRows = true;//表示已经发现子对象数组了!不用再找了!
  18.                                                 break;
  19.                                         }else{
  20.                                                 json = this.getChildJsonByParentID(parentID,rows[row]);
  21.                                         }
  22.                                 }
  23.                         }else{
  24.                                 //删除当前的所有子
  25.                                 for(var row in rows){
  26.                                         delete rows[row].rows;
  27.                                 }
  28.                         }
  29.                 }else{
  30.                         json = {};
  31.                 }
  32.                 return json;
  33.         };
  34.        
  35.         Model.prototype.treeDataCustomRefresh = function(event){
  36.                 var me = this;
  37.                 this.isFindChildRows = false
  38.                 if(this.treeDataJson){
  39.                         var row = event.source.getCurrentRow();
  40.                         var json = me.getChildJsonByParentID(row.val('id'),this.treeDataJson);
  41.                         var rows = json.rows;
  42.                         if(rows){
  43.                                 event.source.loadData(rows,true,row);
  44.                         }
  45.                 }else{
  46.                         biz.Request.sendHttpRequest({
  47.                                 "contentType" : "application/json",
  48.                                 "url" : require.toUrl("$UI/SA/OPM/dialogs/selectFunction/getFunctionData.j?mode=tree" + this.roots + this.files + this.identity + this.type),
  49.                                 "callback" : function(xhr, ts) {
  50.                                         if (biz.Request.isSuccess(xhr)) {
  51.                                                 me.treeDataJson = xhr.responseJSON;
  52.                                                 var json = me.getChildJsonByParentID(null,xhr.responseJSON);
  53.                                                 var rows = json.rows;
  54.                                                 if(rows){
  55.                                                         event.source.loadData(rows,true,row);
  56.                                                 }
  57.                                         }
  58.                                 }
  59.                         });
  60.                 }
  61.                
  62.                
  63.        
  64.         };
复制代码
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

42

主题

162

帖子

672

积分

高级会员

Rank: 4

积分
672
QQ
 楼主| 发表于 2017-9-5 14:01:49 | 显示全部楼层
好的,谢谢,我用了一个外部插件,结贴吧
回复 支持 反对

使用道具 举报

发表于 2017-9-5 16:02:17 | 显示全部楼层
Jessica 发表于 2017-9-5 14:01
好的,谢谢,我用了一个外部插件,结贴吧

什么插件呢??欢迎分享一下,谢谢!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

42

主题

162

帖子

672

积分

高级会员

Rank: 4

积分
672
QQ
 楼主| 发表于 2017-10-9 16:07:56 | 显示全部楼层
liangyongfei 发表于 2017-9-5 16:02
什么插件呢??欢迎分享一下,谢谢!

是一个付费的插件,利用原来使用的甘特图,并加载所有出现的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-7-4 17:17 , Processed in 0.053187 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表