2014-10-01 3 views
2

Как я могу использовать node.setExpanded(true);, чтобы развернуть дерево до определенного уровня?Развернуть дерево до определенного уровня

Что я имею в виду, так это то, что у меня есть 6 уровней глубины и вам нужно только 5 расширить - последний должен быть исключен.

+0

Рекурсивная функция, передающая оставшееся количество уровней, будет делать, но вам действительно нужно показать код, который вы попытались :) –

ответ

1

Это просто руководство, поскольку вы не предоставили никаких данных или кода образца, но вы можете использовать рекурсивную функцию для итерации дерева, останавливаясь при достижении определенной глубины. Что-то вроде:

function expandNode(node, depth) { 
    // Expand this node 
    node.setExpanded(true); 
    // Reduce the depth count 
    depth--; 
    // If we need to go deeper 
    if (depth > 0) { 
     for (var i = 0; i < node.children.length; i++) { 
      // Go recursive on child nodes 
      expandNode(node.children[i], depth); 
     } 
    } 
} 

и вызвать его с корневого узла и общей глубины:

expandNode(rootNode, 5); 

Там также может быть более эффективные методы для перебора в fancytree, но я не использовал fancytree перед тем

+0

большое спасибо, s orry для того, чтобы не предоставлять какой-либо код. я использовал $ ("# tree"). fancytree ("getRootNode"). visit (function (node) { node.setExpanded (true); }); для расширения каждого узла, начиная с корневого каталога! –

+0

@Andreas Zeiner: Код и пример html означали бы рабочую демонстрацию, но вы получите идею из этого примера, я надеюсь :) –

+0

jep, definitly! Большое спасибо за подход !!! –

1
$("#treeView").fancytree("getRootNode").visit(function(node){ 
     if(node.getLevel() < 3) { 
      node.setExpanded(true); 
     } 
    }); 
+0

Лучше всего объяснить, как этот код помогает ОП, тем более, что существует существующий принятый ответ на этот двухлетний вопрос. –

+0

Это было жизненно важно тогда, но спасибо за подход :-) возможно, это помогает кому-то еще :-) –

Смежные вопросы