实例详解ztree在vue项目中使用并且带有搜索功能


Posted in Javascript onAugust 24, 2018

zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。

上篇文章给大家介绍了vue中如何使用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;
  }
 }

展示

实例详解ztree在vue项目中使用并且带有搜索功能

这个有个小小的bug,就是做键盘按下或者抬起的时候会有问题,https://yq.aliyun.com/articles/308489,这个文章就解决了这个问题

实例详解ztree在vue项目中使用并且带有搜索功能

总结

以上所述是小编给大家介绍的ztree在vue项目中使用并且带有搜索功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
Oct 17 Javascript
JS option location 页面跳转实现代码
Dec 27 Javascript
JS限制上传图片大小不使用控件在本地实现
Dec 19 Javascript
JavaScript自定义日期格式化函数详细解析
Jan 14 Javascript
javascript调试之DOM断点调试法使用技巧分享
Apr 15 Javascript
javascript每日必学之循环
Feb 19 Javascript
Bootstrap CSS布局之表格
Dec 17 Javascript
深入理解vue Render函数
Jul 19 Javascript
JS实现的文件拖拽上传功能示例
May 21 Javascript
vue2路由方式--嵌套路由实现方法分析
Mar 06 Javascript
vue实现评价星星功能
Jun 30 Javascript
如何利用node转发请求详解
Sep 17 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
Aug 24 #Javascript
element-ui 表格数据时间格式化的方法
Aug 24 #Javascript
vue select选择框数据变化监听方法
Aug 24 #Javascript
vue左侧菜单,树形图递归实现代码
Aug 24 #Javascript
jQuery md5加密插件jQuery.md5.js用法示例
Aug 24 #jQuery
element-ui中的select下拉列表设置默认值方法
Aug 24 #Javascript
vue 登录滑动验证实现代码
Aug 24 #Javascript
You might like
php环境下利用session防止页面重复刷新的具体实现
2014/01/09 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
部署PHP时的4个配置修改说明
2015/10/19 PHP
PHP创建/删除/复制文件夹、文件
2016/05/03 PHP
js获取变量
2006/08/24 Javascript
jquery 回车事件实现代码
2011/08/23 Javascript
jQuery针对各类元素操作基础教程
2014/08/29 Javascript
高性能JavaScript模板引擎实现原理详解
2015/02/05 Javascript
JQuery工具函数汇总
2015/06/15 Javascript
详解参数传递四种形式
2015/07/21 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
微信小程序实现倒计时调用相机自动拍照功能
2018/06/10 Javascript
Vue中保存数据到磁盘文件的方法
2018/09/06 Javascript
命令行批量截图Node脚本示例代码
2019/01/25 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
Python命名空间详解
2014/08/18 Python
Django框架中数据的连锁查询和限制返回数据的方法
2015/07/17 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
Python中实现switch功能实例解析
2018/01/11 Python
python判断输入日期为第几天的实例
2018/11/13 Python
Python 实现王者荣耀中的敏感词过滤示例
2019/01/21 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
Python字典添加,删除,查询等相关操作方法详解
2020/02/07 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
2020/12/04 Python
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
2014/10/03 面试题
物流管理专业求职信
2014/05/29 职场文书
求职简历自荐信
2014/06/18 职场文书
个性车贴标语
2014/06/24 职场文书
身边的榜样活动方案
2014/08/20 职场文书
工会工作个人总结
2015/03/03 职场文书
企业工会工作总结2015
2015/05/13 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
2015年教师节新闻稿
2015/07/17 职场文书
vue+elementUI实现表格列的显示与隐藏
2022/04/13 Vue.js