实例详解ztree在vue项目中使用并且带有搜索功能
程序员文章站
2023-11-23 20:36:04
ztree 是一个依靠 jquery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 ztree 最大优点。
上篇文章给大家介绍了,大家可以点击查看。...
ztree 是一个依靠 jquery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 ztree 最大优点。
上篇文章给大家介绍了,大家可以点击查看。
之前博客介绍过怎么在vue里展示以及获取点击元素的内容,此文章之介绍搜索功能
html
<el-form-item label="机构" class="ztree-par"> <i class="icon_org"></i> <input type="text" placeholder="请输入机构" id="ser" v-model="ruleform.mechanism" @keyup.enter="search_ztree('treedemo', 'ser')" @click.stop = "control()" class="login-input"> <el-button icon="el-icon-arrow-down" @click.stop="control()"></el-button> <div class="ztree-z" v-show="ztreecon"> <ul id="treedemo" class="ztree"></ul> </div> </el-form-item>
main.js需要单独引入
import "./../static/ztree/js/jquery.ztree.exhide-3.5.min.js";
如果不单独引入这个会获取不到很多元素,在input回车事件或者点击事件的时候直接执行此事件即可
代码部分
expand_ztree(treeid) { var treeobj = $.fn.ztree.getztreeobj(treeid); treeobj.expandall(true); }, close_ztree(treeid) { var treeobj = $.fn.ztree.getztreeobj(treeid); var nodes = treeobj.transformtoarray(treeobj.getnodes()); var nodelength = nodes.length; for (var i = 0; i < nodelength; i++) { if (nodes[i].id == '0') { //根节点:展开 treeobj.expandnode(nodes[i], true, true, false); } else { //非根节点:收起 treeobj.expandnode(nodes[i], false, true, false); } } }, search_ztree(treeid, searchconditionid) { this.searchbyflag_ztree(treeid, searchconditionid, ""); }, searchbyflag_ztree(treeid, searchconditionid, flag) { //<1>.搜索条件 var searchcondition = $('#' + searchconditionid).val(); //<2>.得到模糊匹配搜索条件的节点数组集合 var highlightnodes = new array(); if (searchcondition != "") { var treeobj = $.fn.ztree.getztreeobj(treeid); highlightnodes = treeobj.getnodesbyparamfuzzy("name", searchcondition, null); } //<3>.高亮显示并展示【指定节点s】 this.highlightandexpand_ztree(treeid, highlightnodes, searchcondition, flag); }, highlightandexpand_ztree(treeid, highlightnodes, tx, flag) { var treeobj = $.fn.ztree.getztreeobj(treeid); //<1>. 先把全部节点更新为普通样式 var treenodes = treeobj.transformtoarray(treeobj.getnodes()); for (var i = 0; i < treenodes.length; i++) { treenodes[i].highlight = false; treeobj.updatenode(treenodes[i]); } //<2>.收起树, 只展开根节点下的一级节点 this.close_ztree(treeid); //<3>.把指定节点的样式更新为高亮显示,并展开 if (highlightnodes != null) { for (var i = 0; i < highlightnodes.length; i++) { if (flag != null && flag != "") { if (highlightnodes[i].flag == flag) { //高亮显示节点,并展开 highlightnodes[i].highlight = true; treeobj.updatenode(highlightnodes[i]); //高亮显示节点的父节点的父节点....直到根节点,并展示 var parentnode = highlightnodes[i].getparentnode(); var parentnodes = this.getparentnodes_ztree(treeid, parentnode); treeobj.expandnode(parentnodes, true, false, true); treeobj.expandnode(parentnode, true, false, true); } } else { treeobj.updatenode(highlightnodes[i]); var parentnode = highlightnodes[i].getparentnode(); var parentnodes = this.getparentnodes_ztree(treeid, parentnode); treeobj.expandnode(parentnodes, true, false, true); treeobj.expandnode(parentnode, true, false, true); } } } }, getparentnodes_ztree(treeid, node) { if (node != null) { var treeobj = $.fn.ztree.getztreeobj(treeid); var parentnode = node.getparentnode(); return this.getparentnodes_ztree(treeid, parentnode); } else { return node; } }
展示
这个有个小小的bug,就是做键盘按下或者抬起的时候会有问题,,这个文章就解决了这个问题
总结
以上所述是小编给大家介绍的ztree在vue项目中使用并且带有搜索功能,希望对大家有所帮助
下一篇: python实现视频分帧效果