vue实现搜索结果高亮,复制粘贴即可。

场景:

我们通过搜索后期望在搜索结果列表中带有关键词的词高亮显示。

思路:

对搜索列表的结果数据进行再渲染,一般场景下是通过 v-html 来进行渲染(双大括号无法解析html标签):

//在methods中定义函数
//通过replace函数全局替换搜索键值
//参数html为需高亮显示的内容,如搜索标题、搜索内容等
highlightHTML:function(html,searh_key){
    if(!searh_key) return html;
    html = String(html);
    searh_key = String(searh_key);
    html = html.replace(new RegExp(searh_key,'g'),`<span style="color:tomato;font-weight:bold">${searh_key}</span>`);
    return html;
}
//调用highlightHTML函数
 <div v-html="highlightHTML(html,search_key)"></div>

但有时候是搜索内容通过render函数来解析的,如view UI中Table组件,导致我们不能通过v-html的方式来渲染,则可以:

render:(h,params)=>{
    return h('div',{
        domProps:{
            innerHTML:this.highlightHTML(params.html,this.searchKey)
        }
    });
}

结果:在这里插入图片描述在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值