我创建一个非常简单的fancytree对象,为了解释它只有一个节点和4个孩子,只有一个级别而且我不使用lazyLoad。
在运行时的代码中我看到,直到我没有点击节点来扩展它,孩子的html代码不存在,它在FancyTree lib的javascript init部分。一旦打开或关闭节点,childern的html就会出现不同的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);
});