Vue实现搜索关键词高亮显示
最近写移动端项目的时候,遇到搜索关键词高亮的需求,写篇文章纪录一下
先看效果:
以上为实现效果展示;
整体思路 : 对后台返回的数据进行操作,(我这里是模拟数据),使用正则去匹配搜索关键词后,使用replace进行的替换; 渲染数据部分使用v-html进行动态展示即可实现.
以下是代码:
html代码:
<template> <div class="box"> <!-- 搜索框 --> <div class="mySearch"> <van-search v-model="PopUpSarCh" show-action placeholder="请输入搜索关键词" @search="onSearch" class="onSearch" > <template #action> <div @click="onSearch">搜索</div> </template> </van-search> </div> <!-- 搜索结果 --> <div class="SearchResults"> <div class="SearchContent" v-for="(item, index) in list" :key="index"> <h5 v-html="item.title"></h5> <div class="myContent" v-html="item.name"></div> <div class="dotted"></div> </div> </div> </div> </template>
js代码:
export default { data() { return { list: [], PopUpSarCh: "", }; }, methods: { // 搜索框方法 onSearch() { //每次搜索前清空 this.list = []; var arr = [ { title: "直装直提办理业务", name: "进口水果船边直提大铲湾码头水果通过效率第一,进口水果船边直提", }, { title: "直装直提办理业务", name: "进口水果船边直提大铲湾码头水果通过效率第一,进口水果船边直提", }, { title: "直装直提办理业务", name: "进口水果船边直提大铲湾码头水果通过效率第一,进口水果船边直提", }, { title: "直装直提办理业务", name: "进口水果船边直提大铲湾码头水果通过效率第一,进口水果船边直提", }, ]; this.list = arr; this.changeColor(this.list);//调用搜索词方法 }, // 搜索关键词高亮方法 changeColor(result) { //result为接口返回的数据 result.map((item, index) => { if (this.PopUpSarCh) { /** * 使用正则表达式进行全文匹配关键词 * ig : 表示 全文查找 ,忽略大小写 * i : 忽略大小写 * g : 全文查找 * * 使用字符串的replace方法进行替换 * stringObject.replace(被替换的值,替换的值) title和name是你要高亮的字段 */ let replaceReg = new RegExp(this.PopUpSarCh, "ig"); let replaceString = `<span style="color: #ed4014">${this.PopUpSarCh}</span>`; result[index].title = item.title.replace(replaceReg, replaceString); result[index].name = item.name.replace(replaceReg, replaceString); } }); this.records = result; }, }, };
下一篇:
Linux命名管道进程通信