900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Vue---实现搜索功能的搜索关键词高亮显示

Vue---实现搜索功能的搜索关键词高亮显示

时间:2019-11-19 12:51:49

相关推荐

Vue---实现搜索功能的搜索关键词高亮显示

1.模板代码:

<div v-html="hightligth(text)"></div>

text为自己的文本搜索结果,比如黄某某

例子:

现在我的搜索关键词为黄,那么搜索结果就是黄某某

2.hightligth事件函数处理

(this.searchText为关键词,在本例中就是黄)

hightligth(text) {const hightligthStr = `<span style="color: red">${this.searchText}</span>`//正则表达式//中间的内容都会当作匹配字符来使用,而不是数据变量//如果需要根据数据变量动态的创建正则表达式,则手动new RegExp// RegExp正则表达式构造函数//参数1:匹配模式字符串,它会根据这个字符串创建正则对象//参数2:匹配模式,要写到字符串中//gi表示正则字符串全部匹配和不区分大小写const reg = new RegExp(this.searchText, 'gi')return text.replace(reg, hightligthStr)}

完整代码:

<template><div class="search-suggestion"><van-cell icon="search" v-for="(text, index) in suggestList" :key="index"><div slot="title" v-html="hightligth(text)"></div></van-cell></div></template><script>import { getSearchSuggestion } from '../../../api/search'import { debounce } from 'lodash'export default {name: 'Searchsuggestion',data() {return {suggestList: []};},props: {searchText: {type: String,require: true}},watch: {searchText: {// handler(value) {// console.log(value);// this.loadSearchSuggestion(value)// },handler: debounce(function (value) {this.loadSearchSuggestion(value)}, 200),immediate: true}},mounted() {},methods: {async loadSearchSuggestion(q) {try {const { data } = await getSearchSuggestion(q)console.log(data)this.suggestList = data.data.options} catch (error) {this.$toast('获取文章建议失败!,请稍后重试')}},hightligth(text) {const hightligthStr = `<span style="color: red">${this.searchText}</span>`//正则表达式//中间的内容都会当作匹配字符来使用,而不是数据变量//如果需要根据数据变量动态的创建正则表达式,则手动new RegExp// RegExp正则表达式构造函数//参数1:匹配模式字符串,它会根据这个字符串创建正则对象//参数2:匹配模式,要写到字符串中//gi表示正则字符串全部匹配和不区分大小写const reg = new RegExp(this.searchText, 'gi')return text.replace(reg, hightligthStr)}}};</script><style lang="less" scoped></style>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。