实例详解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 相关文章推荐
Jquery easyUI 更新行示例
Mar 06 Javascript
创建、调用JavaScript对象的方法集锦
Dec 24 Javascript
javascript实现10个球随机运动、碰撞实例详解
Jul 08 Javascript
Bootstrap CSS组件之导航条(navbar)
Dec 17 Javascript
JS图片压缩(pc端和移动端都适用)
Jan 12 Javascript
JavaScript字符集编码与解码详谈
Feb 02 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
Jun 28 Javascript
使用JS组件实现带ToolTip验证框的实例代码
Aug 23 Javascript
Angular7创建项目、组件、服务以及服务的使用
Feb 19 Javascript
新手快速入门微信小程序组件库 iView Weapp
Jun 24 Javascript
vue模块移动组件的实现示例
May 20 Javascript
vue打包时去掉所有的console.log
Apr 10 Vue.js
基于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
smarty静态实验表明,网络上是错的~呵呵
2006/11/25 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
ParseInt函数参数设置介绍
2014/01/02 Javascript
jquery等待效果示例
2014/05/01 Javascript
JavaScript实现弹出子窗口并传值给父窗口
2014/12/18 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
2015/09/14 Javascript
JavaScript构造函数详解
2015/12/27 Javascript
AngularJS中使用HTML5手机摄像头拍照
2016/02/22 Javascript
JS实现的手机端精简幻灯片效果
2016/09/05 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
NodeJs使用Mysql模块实现事务处理实例
2017/05/31 NodeJs
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
JavaScript原生数组函数实例汇总
2020/10/14 Javascript
[00:12]DAC2018 no[o]ne亮相SOLO赛 他是否如他的id一样无人可挡?
2018/04/06 DOTA
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
Python修改Excel数据的实例代码
2013/11/01 Python
Python yield 使用浅析
2015/05/28 Python
Python 编码处理-str与Unicode的区别
2016/09/06 Python
Python2实现的LED大数字显示效果示例
2017/09/04 Python
python实现用户答题功能
2018/01/17 Python
python反编译学习之字节码详解
2019/05/19 Python
python将字典列表导出为Excel文件的方法
2019/09/02 Python
Flask框架请求钩子与request请求对象用法实例分析
2019/11/07 Python
python 等差数列末项计算方式
2020/05/03 Python
pytorch掉坑记录:model.eval的作用说明
2020/06/23 Python
浅谈keras中的keras.utils.to_categorical用法
2020/07/02 Python
Python实现异步IO的示例
2020/11/05 Python
澳大利亚药房在线:ThePharmacy
2017/10/04 全球购物
教师申诉制度
2014/01/29 职场文书
社区学雷锋活动策划方案
2014/01/30 职场文书
《搭石》教学反思
2014/04/07 职场文书
学前班评语大全
2014/05/04 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
战友聚会致辞
2015/07/28 职场文书