实例详解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 相关文章推荐
超清晰的document对象详解
Feb 27 Javascript
isArray()函数(JavaScript中对象类型判断的几种方法)
Nov 26 Javascript
javascript中运用闭包和自执行函数解决大量的全局变量问题
Dec 30 Javascript
javascript的内存管理详解
Aug 07 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
Mar 28 Javascript
jQuery 仿百度输入标签插件附效果图
Jul 04 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
Mar 27 Javascript
Vue.js实现拖放效果的实例
Sep 30 Javascript
VueJs组件prop验证简单介绍
Sep 12 Javascript
jquery无缝图片轮播组件封装
Nov 25 jQuery
vue+element实现打印页面功能
May 20 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
Aug 16 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
基于simple_html_dom的使用小结
2013/07/01 PHP
php简单日历函数
2015/10/28 PHP
CI映射(加载)数据到view层的方法
2016/03/28 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
js导出格式化的excel 实例方法
2013/07/17 Javascript
深入理解JS中的变量及作用域、undefined与null
2014/03/04 Javascript
微信小程序 loading(加载中提示框)实例
2016/10/28 Javascript
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
一种angular的方法级的缓存注解(装饰器)
2018/03/13 Javascript
在ES5与ES6环境下处理函数默认参数的实现方法
2018/05/13 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
微信小程序如何获取群聊的openGid以及名称详解
2019/07/17 Javascript
JS document文档的简单操作完整示例
2020/01/13 Javascript
国内常用的js类库大全(CDN公共库)
2020/06/24 Javascript
使用Element的InfiniteScroll 无限滚动组件报错的解决
2020/07/27 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
python编写暴力破解FTP密码小工具
2014/11/19 Python
python re模块findall()函数实例解析
2018/01/19 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
2018/10/11 Python
详解python-图像处理(映射变换)
2019/03/22 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
2019/04/11 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
用python实现名片管理系统
2020/06/18 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
python 基于opencv操作摄像头
2020/12/24 Python
基于IE10/HTML5 开发
2013/04/22 HTML / CSS
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
CAT鞋加拿大官网:CAT Footwear加拿大
2020/08/05 全球购物
红领巾心向党演讲稿
2014/09/10 职场文书
标准单位租车协议书
2014/09/23 职场文书
导师对论文的学术评语
2015/01/04 职场文书
银行文明优质服务培训心得体会
2016/01/09 职场文书
2016领导干部廉洁从政心得体会
2016/01/19 职场文书
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android