实例详解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 相关文章推荐
javascript 的Document属性和方法集合
Jan 25 Javascript
jquery select(列表)的操作(取值/赋值)
Mar 16 Javascript
Jquery插件之打造自定义的select标签
Nov 30 Javascript
用JS提交参数创建form表单在FireFox中遇到的问题
Jan 16 Javascript
js仿淘宝和百度文库的评分功能
May 15 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
Jan 29 Javascript
JS监控关闭浏览器操作的实例详解
Sep 12 Javascript
微信小程序实战篇之购物车的实现代码示例
Nov 30 Javascript
JS验证输入的是否是数字及保留几位小数问题
May 09 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
Feb 12 Javascript
JavaScript位置参数实现原理及过程解析
Sep 14 Javascript
使用js获取身份证年龄的示例代码
Dec 11 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与paypal整合方法
2010/11/28 PHP
php小偷相关截取函数备忘
2010/11/28 PHP
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
2013/09/30 PHP
php中使用base HTTP验证的方法
2015/04/20 PHP
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
jquery入门—选择器实现隔行变色实例代码
2013/01/04 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
JS Date函数整理方便使用
2013/10/23 Javascript
Javascript基础知识(一)核心基础语法与事件模型
2014/09/29 Javascript
JavaScript跨域方法汇总
2014/10/16 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
JavaScript设计模式之抽象工厂模式介绍
2014/12/28 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
JS基于面向对象实现的拖拽功能示例
2016/12/20 Javascript
Javascript中的getter和setter初识
2017/08/17 Javascript
使用jquery+iframe做一个ajax上传效果(实例)
2017/08/24 jQuery
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
vue实现简单loading进度条
2018/06/06 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
微信小程序mpvue点击按钮获取button值的方法
2019/05/29 Javascript
vue 虚拟DOM的原理
2020/10/03 Javascript
Python自动调用IE打开某个网站的方法
2015/06/03 Python
微信跳一跳自动运行python脚本
2018/01/08 Python
DataFrame 将某列数据转为数组的方法
2018/04/13 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
python求前n个阶乘的和实例
2020/04/02 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
python爬虫把url链接编码成gbk2312格式过程解析
2020/06/08 Python
Python实现播放和录制声音的功能
2020/08/12 Python
中东地区为妈妈们提供一切的头号购物目的地:Sprii
2018/05/06 全球购物
优秀少先队员事迹材料
2014/12/24 职场文书
2016幼儿园中班开学寄语
2015/12/03 职场文书
《认识钟表》教学反思
2016/02/16 职场文书