【el-tree查询并高亮】vue使用el-tree组件,搜索展开并选中对应节点,高亮搜索的关键字,过滤后高亮关键字,两种方法

第一种(直接展开并高亮关键字)

效果图这样的,会把所有的有这些关键字的节点都展开
在这里插入图片描述
代码:
这里的逻辑就是通过递归循环把所有和关键字匹配的节点筛选出来
然后通过setCheckedKeys方法把他展开选中
然后通过filterReal把关键字高亮标蓝

<body><div id="app" style="padding:10px;"><!-- 查询框 --><input class="el-textarea__inner" v-model.lazy="title" placeholder="请输入菜单名称"style="margin-left:10px;width: 220px;" @keyup.enter="getlists"></input><!-- 树形菜单 --><el-tree :data="data2" node-key="id" :props="defaultProps":highlight-current="gaoliang" :default-expanded-keys="openkeys" :default-expand-all="closed":show-checkbox='show_checkboxd' ref="tree2"><span class="custom-tree-node" slot-scope="{ node, data }"><span v-html="$options.filters.filterReal(node.label, title)"></span></span></el-tree></div>
</body>
<script type="text/javascript">let v = new Vue({el: '#app',filters: {filterReal(value, key) {const ind = value.indexOf(key);if (value.includes(key))return (value.split("").slice(0, ind).join("") +'<span class="key-word">' +key +"</span>" +value.split("").slice(ind + key.length).join(""));return `<span>${value}</span`;},},data() {return {data2: [],//列表defaultProps: {children: 'children',label: 'title'},title: '',//查询openkeys:[]}},methods: {getlists() {// this.$refs.tree2.filter(this.title);// returnlet that = thisif (that.title != '') {that.openkeys = []that.$refs.tree2.setCheckedKeys(that.openkeys);//清空节点选择,节点收起let arr = []that.openkeys = this.getAllId(arr, this.data2) //递归拿到查询的所有关键字节点idthat.$refs.tree2.setCheckedKeys(that.openkeys)//根据这些id展开节点}},// 递归:查询treegetAllId(keys, dataList) {let that=thisif (dataList && dataList.length) {for (let i = 0; i < dataList.length; i++) {if(dataList[i].title.includes(that.title)){keys.push(dataList[i].id) //查询关键字相同的id添加进去}if (dataList[i].children) {keys = this.getAllId(keys, dataList[i].children)}}}return keys},}})
</script>
<style scoped></style></html>

第二种(过滤之后再关键字高亮)

这个是用的官方文档的那个过滤方式,可以参考官方文档看一下。
只不过高亮关键字用这里的
核心写法和上面一样,变动的只有两个地方
1,在tree标签上加上这句话:filter-node-method="filterNode"这个方法复制下面的,
只需要把data.title修改成你字段的名字就行,比如你的字段叫name就是data.name。
如果是lable就是data.lable。其他的不用动
2,差的时候调用这个this.$refs.tree2.filter(this.title);里面的title就是你搜索的值

<body><div id="app" style="padding:10px;"><!-- 查询框 --><input class="el-textarea__inner" v-model.lazy="title" placeholder="请输入菜单名称"style="margin-left:10px;width: 220px;" @keyup.enter="getlists"></input><!-- 树形菜单 --><el-tree :data="data2" node-key="id" :props="defaultProps":highlight-current="gaoliang" :default-expanded-keys="openkeys" :default-expand-all="closed":show-checkbox='show_checkboxd' ref="tree2" :filter-node-method="filterNode"><span class="custom-tree-node" slot-scope="{ node, data }"><span v-html="$options.filters.filterReal(node.label, title)"></span></span></el-tree></div>
</body>
<script type="text/javascript">let v = new Vue({el: '#app',filters: {filterReal(value, key) {const ind = value.indexOf(key);if (value.includes(key))return (value.split("").slice(0, ind).join("") +'<span class="key-word">' +key +"</span>" +value.split("").slice(ind + key.length).join(""));return `<span>${value}</span`;},},data() {return {data2: [],//列表defaultProps: {children: 'children',label: 'title'},title: '',//查询openkeys:[]}},methods: {filterNode(value, data) {if (!value) return true;return data.title.indexOf(value) !== -1;},getlists() {this.$refs.tree2.filter(this.title);},}})
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/8705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用Java写网络聊天系统你会吗???

1.使用Socket进行编写代码&#xff1a;这里还涉及多线程的简单应用。 2.首先创建一个MyWriter类&#xff0c;用于发送客户端和服务器端的聊天信息。 /** Copyright (c) 2020, 2023, All rights reserved.**/import java.io.PrintWriter; import java.net.Socket; import java.…

MATLAB | 产生阿尔法稳定分布噪声并作出概率密度函数

一、问题描述 想产生不同特征参数的α稳定随机变量&#xff0c;并且作出其概率密度函数进行对比。 二、解决思路 运行了MATLAB的官方实例代码&#xff1a; openExample(‘stats/ComparePDFsOfStableDistributionsExample’) &#xff08;1&#xff09;使用makedist()函数生成…

数据可视化(2)

1.柱状图 #柱状图 #bar(x,height,width,*,aligncenter,**kwargs) #height柱子的高度&#xff0c;即y轴上的数据 #width数组的宽度&#xff0c;默认值0.8 #*表示后面的参数为匿名关键字&#xff0c;必须传入参数 #kwargs关键字参数x[1,2,3,4,5] height[random.randint(10,100)f…

OpenAI Code Interpreter 的开源实现:GPT Code UI

本篇文章聊聊 OpenAI Code Interpreter 的一众开源实现方案中&#xff0c;获得较多支持者&#xff0c;但暂时还比较早期的项目&#xff1a;GPT Code UI。 写在前面 这篇文章本该更早的时候发布&#xff0c;但是 LLaMA2 发布后实在心痒难忍&#xff0c;于是就拖了一阵。结合 L…

Python函数

1.传递可更改对象与不可更改对象区别 Python的可更改类型包括&#xff1a;列表List、字典Dictionary、集合Set 当传递的参数是可更改类型时&#xff0c;这就相当于是C的引用传递&#xff0c;函数内部对参数进行更改&#xff0c;函数之外也会进行更改&#xff0c;因为操作的同一…

Jmeter 中 Beanshell 的使用

目录 前言&#xff1a; Beanshell 介绍 常用内置变量 log vars 和 props vars 常用方法&#xff1a; props 常用方法&#xff1a; prev 综合运用 前言&#xff1a; JMeter 是一个广泛使用的性能测试工具&#xff0c;它支持许多不同的测试技术和方法。其中&#xff0c…

6 | 中国天气网

文章目录 用Python爬取中国天气网的天气预报信息1. 获取HTML页面内容2. 解析HTML并提取数据3. 保存数据到CSV文件4. 主函数5. 爬虫脚本用Python爬取中国天气网的天气预报信息 在这篇博客中,我将会展示如何使用Python编程语言来从中国天气网爬取天气预报信息。这将涵盖如何获取…

Qt实现双控制柄的Slider

目标 实现带有左右两个控制柄的滑动条&#xff1b;控件可设定最小值和最大值&#xff1b;控件可设定控制柄的最小距离&#xff1b; 效果演示 思路 1. 标准的Slider控件只有一个Handle&#xff0c;所以想要通过改造QSlider来实现两个Handle是非常困难的&#xff0c;“自绘”…

Vue+Nodejs 使用WebSocket创建一个简易聊天室

文章目录 一、页面效果二、架构流程三、技术细节1.客户端2. 服务端 一、页面效果 二、架构流程 使用vue编写前端页面&#xff0c;nodejs处理服务端消息&#xff0c;WebSocket进行实时通信 三、技术细节 1.客户端 <template><div><form onsubmit"return…

【itext7】itext7操作PDF文档之添加表单控件(单行文本框、多行文本框、单选框、复选框、下拉框、按钮)

这篇文章&#xff0c;主要介绍itext7操作PDF文档之添加表单控件&#xff08;单行文本框、多行文本框、单选框、复选框、下拉框、按钮&#xff09;。 目录 一、itext操作PDF表单 1.1、添加单行文本框 1.2、添加多行文本框 1.3、添加单选框 1.4、添加复选框 1.5、添加下拉框…

无涯教程-html()

html()方法获取第一个匹配元素的html内容。此属性在XML文档上不可用&#xff0c;但适用于XHTML文档。 html( ) - 语法 selector.html() html( ) - 示例 以下示例将获取第一段的HTML内容&#xff0c;并将其显示在第二段中。请同时检查 html(val)方法的描述。 <html>&…

WEB安全测试通常要考虑的测试点

1、问题&#xff1a;没有被验证的输入 测试方法&#xff1a; 数据类型&#xff08;字符串&#xff0c;整型&#xff0c;实数&#xff0c;等&#xff09; 允许的字符集 最小和最大的长度 是否允许空输入 参数是否是必须的 重复是否允许 数值范围 特定的值&#xff08;枚举型&a…

MacBook安装Git三种方式

MacBook安装Git三种方式 git官方下载地址: https://git-scm.com/download 方式一(推荐) Git官网下载最新git Mac版本安装 下载地址: https://git-scm.com/download/mac Binary installer 二进制安装 下载 git-2.27.0-intel-universal-mavericks.dmg 点击安装 查看版本 git …

大语言模型

LLM通常基于Transformer架构构建&#xff0c;这类模型依赖于自注意力机制。Transformer能够高效利用计算资源&#xff0c;使得训练更大规模的语言模型成为可能。 例如&#xff0c;GPT-4包含数十亿个参数&#xff0c;在大规模数据集上训练&#xff0c;在其权重中有效编码了大量…

k8s使用helm部署Harbor镜像仓库并启用SSL

1、部署nfs存储工具 参照&#xff1a;https://zhaoll.blog.csdn.net/article/details/128155767 2、部署helm 有多种安装方式&#xff0c;根据自己的k8s版本选择合适的helm版本 参考&#xff1a;https://blog.csdn.net/qq_30614345/article/details/131669319 3、部署Harbo…

WPF实战学习笔记04-菜单导航

菜单导航 添加文件与文件夹 添加文件夹 ​ ./Extensions 添加文件&#xff3b;类型&#xff1a;用户控件&#xff3d; ./Views/IndexView.xaml ./Views/MemoView.xaml ./Views/TodoView.xaml ./Views/SettingsView.xaml ./ViewModels/IndexViewModel.cs ./ViewModels/IndexV…

0成本搭建自己的云数据库

第一步&#xff0c;租免费的云服务器 www.aliyun.com 阿里云的&#xff0c;可以免费租三个月 进入主页后选择云服务器ESC 选择这款&#xff0c;点击试用就行 第二步&#xff0c;配置服务器 在配置服务器系统的时候选择centos&#xff0c;省事&#xff0c;别选ubuntu&#x…

动手学深度学习——线性回归从零开始

生成数据集synthetic_data()读取数据集data_iter()初始化模型参数w, b定义模型&#xff1a;线性回归模型linreg()定义损失函数&#xff1a;均方损失squared_loss()定义优化算法&#xff1a;梯度下降sgd()进行训练&#xff1a;输出损失loss和估计误差 %matplotlib inline impor…

java项目之人才公寓管理系统(ssm+mysql+jsp)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的人才公寓管理系统。技术交流和部署相关看文章末尾&#xff01; 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java 框架&…

iOS pod EaseIMKit库如何放在本地使用

在使用环信EaseIMKit库的时候&#xff0c;发现有些开发者需要改动库中的一些逻辑&#xff0c;或者有UI上的一些调整&#xff0c;如果直接去改pods里面的库&#xff0c;在之后的库版本升级会把之前修改过的代码覆盖掉&#xff0c;这个时候我们就需要pod指向本地的库&#xff0c;…