2017-12-15 8 views
-1

私はfancytreeオブジェクトを非常にシンプルに作成します。説明のためにノードが1つと子どもが4つ、レベルが1つしかなく、lazyLoadは使用しません。クリックされない限り、HTMLは入力されません

実行時のコードでは、ノードをクリックして展開しない限り、子どものhtmlコードはそこにはありません.FancyTreeのlibのjavascript init部分にあります。ノードが開いたり閉じたりすると、childernのhtmlはdifferenct cssクラスがあり、明らかにそれらを表示/非表示にします。

ツリーをロードした後にノードを表示させるように強制することができますが、それらを閉じて、すべての子がすでにHTMLに埋め込まれている必要があります。 私はすべてのノードを解析してそれらを開いて閉じることができると思いますが、より良い解決策があるかどうかは疑問です。私はこの回避策を考え出す瞬間

SOURCE = [ 
    {title: "node 1", folder: true, expanded: true, children: [ 
     {title: "node 1.1", foo: "a"}, 
     {title: "node 1.2", foo: "b"} 
    ]}, 
    {title: "node 2", folder: true, expanded: false, children: [ 
     {title: "node 2.1", foo: "c"}, 
     {title: "node 2.2", foo: "d"} 
    ]} 
    ]; 
    $("#tree").fancytree({ 
     clickFolderMode: 2, 
     selectMode: 1, 
     keyboard: false, 
     source: SOURCE 
    }); 

:ここ

簡単な例

まず、私はすべてのノードを開きます。

var tree = $("#tree").fancytree("getTree"); 
tree.visit(function (node) { 
    node.setExpanded(true); 
}); 

その後、私はそれらを閉じる:

tree.visit(function (node) { 
    node.setExpanded(false); 
}); 
+1

コードを入力してください。 – Granny

答えて

1

Fancytreeは、必要に応じてhtml要素をレンダリングします。 これを強制するには

tree.render(true, true); 

を使用できます。 detailsについてはこちらをご覧ください。

関連する問題