我们正在使用Fancytree(https://github.com/mar10/fancytree/)作为我们的在线帮助系统。
我在示例中看到,当设置文件夹属性时,节点可以自动拥有文件夹图标,可以通过HTML对象类( class ="文件夹& #34; )或通过JSON("文件夹":true )。
但是我想在节点有子节点时设置文件夹属性。
我已经尝试了几种方法,但没有成功。当 node.hasChildren 为true时,我尝试将 node.folder 设置为true,尝试在createNode事件,renderNode事件,loadChildren事件上尝试访问所有init事件上的节点。
有什么想法吗?
答案 0 :(得分:0)
我终于找到了自己的解决方案!我记得来自FancyTree文档(https://github.com/mar10/fancytree/wiki/TutorialLoadData)的示例,我可以使用 postProcess 事件对正在加载的数据进行后处理并对其进行转换,这就是我所做的。 / p>
因此,我遍历列表中的项目,搜索具有子元素的项目,将文件夹属性设置为true。但是这个函数必须是递归的,所以我可以检查孩子的孩子等等。
让我们来看看代码:
<script type="text/javascript">
function checkNodesForChildren(nodes) {
$.each(nodes, function (index, node) {
if (node.children) {
node.folder = true;
checkNodesForChildren(node.children);
};
});
}
$(function () {
$("#tree").fancytree({
source: {
url: "/Ajuda.json",
contentType: "application/json; charset=iso-8859-1"
},
postProcess: function (event, data) {
checkNodesForChildren(data.response);
}
});
});
</script>
对于我的情况,问题解决了!