2017-10-07 53 views
0

私はfancytreeにノードのアイコンを設定しようとしています。私は私がそうすることをrenderNodeを使用することができ、オンラインでの例で見つかった:ファンシーツリーのノードのすべての子供を得るには?

$("#tree").fancytree({ 
    // Image folder used for data.icon attribute. 
    imagePath: "skin-custom/", 
    // icon: false, 
    renderNode: function(event, data) { 
    // Optionally tweak data.node.span 
    var node = data.node; 
    // Some logic here 
    } 
}); 

私は、そのノードの子を通過し、それらがすべて選択されている場合、特定のアイコンを設定したいと思います。しかし、私が子供を迎え入れると、私は最初のレベルの子供しか手に入れません。つまり、私はノードの子供の子供を手に入れません。 これを達成する方法はありますか? ありがとうございます。

答えて

1

renderNodeコールバックはオンデマンドでのみ呼び出されます。新しいノードの場合、状態が変化したとき、またはnode.renderStatus()が呼び出されたとき。

$(...).fancytree({ 
    icon: function(event, data) { 
     return data.node.isSelected() ? "a" : "b"; 
    }, 
    ... 
}); 

あなたはすべてのノードを反復処理するために、このパターンを使用することができます:

node.visit(function(n){ 
    console.log(n.isSelected()); 
}); 
+0

おかげでお返事について多くのことをあなたはアイコンを計算する必要がある場合

あなたはicon optionを使用することができます。アイコンのオプションを確認します。私はすでに 'node.visit(function(n){ console.log(n.isSelected()); });'関数を使っています。しかし、すべてのノードを反復処理するわけではありません。これはルートと最初のレベルの子のみを反復します。私は根の子供の子供たちを返すことはありません。しかし、まだありがたいことです:) – arvind

+0

訪問メソッドは**すべての**子孫をトラバースします(もちろん、ロードされていない遅延ノードを除く) – mar10

関連する問題