美文网首页
树形图插件jstree

树形图插件jstree

作者: 冯正_566c | 来源:发表于2018-08-24 13:43 被阅读0次

写在前面

最近赶项目,里面有这样的一个需求,从后台获取到json以后,将数据写成树的形式


pic.png

网上找了jstree插件

安装及使用

<link href="css/plugins/jsTree/style.min.css" rel="stylesheet">
<script src="js/plugins/jsTree/jstree.min.js"></script>

下载到本地,引入.没什么说的

初始化

//html
<div id="data-tree"></div>
//js
$.ajax({
    type:"get",
    url:"",
    async:true,
    success:function(data){
        if(data){
             var treeDataObj = formatTreeData(data.children);
             $('#data-tree').jstree(
                    {
                        'core': {
                            'data': treeDataObj
                        },
                        "plugins": ["search"]//添加搜索功能
                    }
                );
        }
    }
});

这些都没什么,主要是这个格式化数据弄的我脑阔疼,jstree的数据要求一般是这种格式

 'core' : {
      'data' : [
        { "text" : "Root node", "children" : [
            { "text" : "Child node 1" },
            { "text" : "Child node 2" }
          ]
        }
      ]
    }

请求到的数据不是这种格式,这时候需要修改,每一层都要加上text id等属性,这时候需要循环一下

        var formatTreeData = function (data) {
            var result = data instanceof Array ? [] : {};
            for (var i in data) {
                if (typeof data[i] == 'object') {
                    result[i] = formatTreeData(data[i]);
                } else {
                    result.id = data.classId;
                    result.text = data.className;
                    result.icon = 'fa fa-reorder';
                    result.type = 'Field';
                }
              }
           return result;
           }

还得需要判断最后一层,并且区分开有数据的(这个实在是不怎么会)

点击节点

  $('#data-tree').on('select_node.jstree', function (selected, selectedNode) {
       // selected:选中的标签
       //selectedNode:选中的标签存储的数据
  });

搜索功能

$("#data-tree").jstree(true).search($("#searchTreeInput").val());

暂时用到的就这些 其他的请移步https://blog.csdn.net/qq_24472595/article/details/70053863

相关文章

网友评论

      本文标题:树形图插件jstree

      本文链接:https://www.haomeiwen.com/subject/btfbiftx.html