Fancytree - 节点有子节点时设置文件夹属性

时间:2017-06-08 18:26:33

标签: jquery fancytree

我们正在使用Fancytree(https://github.com/mar10/fancytree/)作为我们的在线帮助系统。

我在示例中看到,当设置文件夹属性时,节点可以自动拥有文件夹图标,可以通过HTML对象类( class ="文件夹& #34; )或通过JSON("文件夹":true )。

但是我想在节点有子节点时设置文件夹属性。

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

有什么想法吗?

1 个答案:

答案 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>

对于我的情况,问题解决了!