2017-06-08 106 views
0

我们使用Fancytree(https://github.com/mar10/fancytree/)作为我们的在线帮助系统。Fancytree - 当节点有孩子时设置文件夹属性

我已经看到在实施例,一个节点可以自动有一个文件夹图标时,属性设置,或者通过HTML对象类(类=“文件夹”)或经由JSON(“文件夹” :true)。

但是,我希望文件夹属性设置每当一个节点有孩子。

我已经尝试了几种方法,但没有成功。我尝试将node.folder设置为true,当node.hasChildren为true时,试着在createNode事件,renderNode事件,loadChildren事件上试图访问init事件上的所有节点。

任何想法?

+0

欢迎来到SO,谢谢你的提问,如果你能提供某种演示或某些代码,你可以用这种方式让人们指出具体的解决方案,那将会很好。请查看这篇文章https://stackoverflow.com/help/how-to-ask – nramirez

回答

0

我终于找到了自己的解决方案!我记住了FancyTree文档中的例子(https://github.com/mar10/fancytree/wiki/TutorialLoadData),我可以使用事件来后处理正在加载的数据并对其进行转换,这就是我所做的。

因此,我遍历我的列表中的项目,搜索有子元素的项目,将文件夹属性设置为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> 

对于我来说,问题解决了!