实例详解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 相关文章推荐
Prototype源码浅析 Enumerable部分之each方法
Jan 16 Javascript
用js获取电脑信息(是使用与IE浏览器)
Jan 15 Javascript
浅析tr的隐藏和显示问题
Mar 05 Javascript
JS来动态的修改url实现对url的增删查改
Sep 05 Javascript
javascript实现随时变化着的背景颜色
Apr 02 Javascript
javascript数组去重小结
Mar 07 Javascript
javascript实现数组去重的多种方法
Mar 14 Javascript
浅谈JavaScript中promise的使用
Jan 11 Javascript
Vue入门之animate过渡动画效果
Apr 08 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
Sep 18 Javascript
bootstrap实现tab选项卡切换
Aug 09 Javascript
详解React的回调渲染模式
Sep 10 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
《破坏领主》销量已超100万 未来将继续开发新内容
2020/03/08 其他游戏
截获网站title标签之家内容的例子
2006/10/09 PHP
ThinkPHP3.1新特性之字段合法性检测详解
2014/06/19 PHP
ThinkPHP和UCenter接口冲突的解决方法
2016/07/25 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
PHP PDO数据库操作预处理与注意事项
2019/03/16 PHP
PHP正则表达式笔记与实例详解
2019/05/09 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
2019/07/06 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
JQuery上传插件Uploadify使用详解及错误处理
2010/04/27 Javascript
学习面向对象之面向对象的基本概念:对象和其他基本要素
2010/11/30 Javascript
JS正则替换掉小括号及内容的方法
2016/11/29 Javascript
简单实现JS倒计时效果
2016/12/23 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
详解在 Angular 项目中添加 clean-blog 模板
2017/07/04 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
vue自定义指令directive的使用方法
2019/04/07 Javascript
Vue $mount实战之实现消息弹窗组件
2019/04/22 Javascript
[05:05]DOTA2亚洲邀请赛 战队出场仪式
2015/02/07 DOTA
[46:53]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python调用C语言开发的共享库方法实例
2015/03/18 Python
HTML中使用python屏蔽一些基本功能的方法
2017/07/07 Python
Pandas标记删除重复记录的方法
2018/04/08 Python
python多进程读图提取特征存npy
2019/05/21 Python
python爬虫之快速对js内容进行破解
2019/07/09 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
2019/12/23 Python
python爬虫实现POST request payload形式的请求
2020/04/30 Python
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
北京鼎普科技股份有限公司软件测试面试题
2012/04/07 面试题
校庆活动方案
2014/03/31 职场文书
2016年端午节寄语
2015/12/04 职场文书
私人贷款担保书该怎么写呢?
2019/07/02 职场文书
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP
Redis三种集群模式详解
2021/10/05 Redis