树形结构treeView,文件路径处理(获取点击节点的值以及父级节点直到根目录的值)

it2022-05-05  103

树形结构treeView,文件路径处理

点击树形结构的节点,需要将此节点的值以及父节点的值直到根节点 的值我百度了一下treeview,发现api并没有这种获取父节点值的方法,所以就从数据上想办法,可以让后台返回的数据中,text的值可以为当前节点直到根节点的路径, 首先引入 //必须第一个引入jq <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> //引入bootstarp <link rel="stylesheet" href="css/bootstrap.min.css" /> <script type="text/javascript" src="js/bootstrap.min.js"></script> //引入bootstrap-treeview <link href="https://cdn.bootcss.com/bootstrap-treeview/1.2.0/bootstrap-treeview.min.css" rel="stylesheet"> <script src="https://cdn.bootcss.com/bootstrap-treeview/1.2.0/bootstrap-treeview.min.js"></script> 数据如下所示: var root = { 'text': 'D盘', 'nodes': [{ 'text': 'D盘/音乐', 'nodes': [{ 'text': 'D盘/音乐/喜欢的歌', 'nodes': [{ 'text': 'D盘/音乐/喜欢的歌/林俊杰', 'nodes': [{ 'text': 'D盘/音乐/喜欢的歌/林俊杰/爱笑的眼睛' }, { 'text': 'D盘/音乐/喜欢的歌/林俊杰/江南' } ] }] }] }, { 'text': 'D盘/电影', 'nodes': [{ 'text': 'D盘/电影/美国电影' }, { 'text': 'D盘/电影/日本电影' } ] } ] }

4.如果这是后台返回的数据,我们在展示到页面之前,需要对root进行处理,

// 遍历单个节点 function traverseNode(node) { var nodeTextArr = node.text.split("/"); var len=nodeTextArr.length-1; node.path = node.text; //给node对象增加path属性 node.text=nodeTextArr[len]; } function traverseTree(node) { if(!node) { return; } traverseNode(node); if(node.nodes && node.nodes.length > 0) { var i = 0; for(i = 0; i < node.nodes.length; i++) { this.traverseTree(node.nodes[i]); } } } traverseTree(root); var rootArr=[]; rootArr.push(root); //因为treeview中的参数data是数组格式,所以需要将root弄到一个数组里 //初始化树形结构 $('#tree').treeview({ data: rootArr, levels: 1, showTags: true })

点击某节点的时候,调用nodeSelected方法打印data 5.选中节点的时候,调用方法nodeSelected

$('#tree').on('nodeSelected', function(event, data) { console.log(data); if(data.nodes == undefined) { console.log('没有子文件夹'); } else { console.log('有子文件夹'); } });

6.这时候,就可以点击某个节点的时候将node节点直到根目录的路径直接发送给后台就可以。


最新回复(0)