7

AJAX でデータをロードするオプションを指定して jsTree ( 1.0-rc3 ) を使用していますが、約 2000 の子ノードをロードする際に問題があります。サーバーは数秒以内に応答しますが、jsTree がブラウザ (chrome、FF) で結果をレンダリングするのに約 40 秒しかかかりません。それに加えて、FF は「jquery-1.7.2.min.js」からの応答がないという情報を返します。同じ量のデータが IE をフリーズさせます。データでオーバーロードされていますか? それとも何らかのバグですか?レンダリングの高速化に役立つ変更可能な要因はありますか?

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();
        } );
4

1 に答える 1

2

やってみました?

  • progress_render

    progress_renderブール値。デフォルトはfalseです。このオプションがtrueに設定されている場合、返されたJSONの表示されている(開いているノード)部分のみがDOMノードに変換され、非表示の部分はすべて保存され、オンデマンドで解析されます(ノードが表示されるようになったとき)。これは、大きなネストされたツリーがあり、DOMが重い場合に便利です。

  • AJAXの読み込み

于 2012-11-25T22:09:17.040 に答える