基于vue实现搜索高亮关键字

摘要:
有一个需求是在已有列表中搜索关键词,然后在列表中展示含有相关关键字的数据项并且对关键字进行高亮显示,所以该需求需要解决的就两个问题:1.搜索关键词过滤列表数据2.每个列表高亮关键字ps:此问题基于数组对象,其他数据类型也可参考此思路。上面是使用watch监听search值变化处理的,也可以使用computed属性计算showdata。12.highlights-text{3color:#ff5134;4}5贴一张效果图:

有一个需求是在已有列表中搜索关键词,然后在列表中展示含有相关关键字的数据项并且对关键字进行高亮显示,所以该需求需要解决的就两个问题:

1.搜索关键词过滤列表数据

2.每个列表高亮关键字

ps: 此问题基于数组对象,其他数据类型也可参考此思路。

关键词搜索:过滤数据很简单,无非就是监听search,对源数据过滤即可,贴一下代码:

1 const search = this.search
2 if(search) {
3     this.showdata = this.copyshowdata.filter(data =>{
4          return Object.keys(data).some(key =>{
5              return String(data[key]).indexOf(search) > -1
6 })
7 })       
8 } else{
9     this.showdata = this.copyshowdata
10 }        

showdata是展示在页面的,copyshowdata是showdata副本,还原列表时使用的,对其不做任何处理。

上面是使用watch监听search值变化处理的,也可以使用computed属性计算showdata。

高亮关键字:思路是遍历showdata,对每一项item的值进行正则匹配(也可匹配指定项),使用<span class="highlights-text"></span> 替换掉search

1 highlights () {
2         const search = this.search
3         this.showdata = this.showdata.map(item =>{
4           for (let key initem) {
5             if (key === 'Issuecontent') {
6               let replaceReg = new RegExp(search, 'g')//匹配关键字正则
7               let replaceString = '<span class="highlights-text">' + search + '</span>' //高亮替换v-html值
8               item[key + '-highlights'] = item[key].replace(replaceReg, replaceString) //开始替换
9 }
10 }
11           returnitem
12 })
13       }

页面上则使用v-html=“item[key-highlights]”渲染

渲染之后还需要对样式进行单独处理,不能加在父类上面,而且scope要去掉,否则样式不会生效。

1 <style lang="scss">
2 .highlights-text {
3 color:#ff5134;
4   }
5 </style>

贴一张效果图:

基于vue实现搜索高亮关键字第1张

免责声明:文章转载自《基于vue实现搜索高亮关键字》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux救援模式备份文件docker 自动更新镜像和容器下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vim中文件类型识别、语法高亮及缩进实现流程

一、文件类型在使用vim编辑一个文件的时候,如果能够识别出文件的类型,加上对应的高亮规则,可以使文件的查看更加醒目,这个功能几乎是使用vim浏览文件的一个核心诉求。另外,在进行文件编辑的时候,特别是使用vim写代码的时候(典型的场景是通过vim写C/C++代码),如果能够智能缩进,还可以减少敲代码。例如,在每行的开头自动添加缩进与前一行对齐;或者是当在输入...

22种开源Vue模板和主题框架「干货」

前言 在Internet上搜索模板和主题时,很难找到免费的Vue资源。 即使您不在乎质量,它们似乎也很难被发现,并出于好奇而感动,我花了数小时在Google和Github上四处挖掘,结果得到了收集22种开源Vue模板和主题框架集合。我不会对此打赌,但是它们也是高质量的资源。 Bootstrap Vue 现场演示:https://bootstrap-vue...

【转】Hbuilder配置Avalon、Vue指令提示

转载自CSDN http://blog.csdn.net/jianggujin/article/details/71419828 我本人是一名Java后端开发,偶尔也会研究一下前端内容,因为Hbuilder是基于eclipse开发的,所以用起来倍感亲切啊,而且在我尝试使用的几款前端开发工具中,Hbuilder的表现也是相当出色地,可以访问Huilder官网...

VScode设置vue文件中保存自动格式化代码以及settings.json文件的配置。

最近在做vue 项目中,由于安装有代码检测工具ESlint,每次写完代码后就发现很多语法警告,查找配置好多也有许些小问题,现记录一份settings.json配置文件。 1、设置如下:  2、settings.json文件配置如下: { // vscode默认启用了根据文件类型自动设置tabsize的选项 "editor.detectIndent...

浅析vue混入(mixin)

  vue中的混入,可以在一定程度上提高代码的复用性。通俗来说,混入类似于“继承”,当前组件对象继承于组件对象,一般情况下遵循“就近原则”。但是与继承不同的是,继承一般都跟随着属性的重写与合并,混入在不同的配置项中,有着不同的混入策略,下面会一一进行介绍vue不同配置项的混入策略。vue混入的基本流程如图所示,混入属性的合并是发生在组件的生命周期钩子调用之...

完整UI组件库Kendo UI for Vue R3 2021

R3 2021版本是Kendo UI for Vue有史以来最重大的版本发布,这个版本非常庞大,其中有20个新的原生组件,或者说有34个新组件,包括各种图表和数据可视化。下来,跟我们一起了解一下这些功能吧! Kendo UI for Vue R3 2021最新版下载 支持Bootstrap 5 在 R3 2021 中,Kendo UI for Vue正式...