首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jsTree -渲染优化- 2000节点的超长渲染

jsTree -渲染优化- 2000节点的超长渲染
EN

Stack Overflow用户
提问于 2012-11-22 09:32:16
回答 1查看 4.8K关注 0票数 7

我使用带有选项的jsTree ( 1.0-rc3 )通过AJAX加载数据,并且在通过它加载大约2000个childs节点时遇到了问题。当服务器在几秒钟内做出响应时,jsTree大约需要40秒才能在浏览器中呈现结果(chrome,FF)。除此之外,FF还返回关于jQuery1.7.2.min.js没有响应的信息,同样数量的数据冻结了IE。它是否超载了数据?还是某种虫子?有什么变化的因素,可以帮助我更快的渲染吗?

代码语言:javascript
复制
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();
        } );
EN

回答 1

Stack Overflow用户

发布于 2012-11-25 22:09:17

你试过吗?

  • 渲染 progressive_render A布尔型。默认是假的。如果将此选项设置为true,则返回的JSON的可见(打开节点)部分将转换为DOM节点,任何隐藏部分都会保存起来,并按需解析(当节点变为可见时)。这是有用的,当您有一个大的嵌套树,这将导致沉重的DOM
  • AJAX加载
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13509542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档