Vue搜索高亮展示是指在Vue應用中,用戶輸入關鍵詞進行搜索時,能夠將匹配到的關鍵詞在搜索結果中高亮顯示。這種功能可以提高用戶的搜索體驗,讓用戶更快地鎖定所需要的信息。
實現Vue搜索高亮展示的方法有多種。其中一種方法是利用Vue的計算屬性來實現,具體步驟如下:
<template>
<div id="app">
<input v-model="keyword">
<ul>
<li v-for="(item, index) in itemList" :key="index">
{{ highlight(item.text) }}
</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
keyword: '',
dataList: [
{text: 'Vue.js is a JavaScript framework for building user interfaces.'},
{text: 'It can be used in Single Page Applications and other web applications.'},
{text: 'Vue.js can also act as a web application framework capable of powering advanced single-page applications.'},
]
}
},
computed: {
itemList() {
return this.dataList.filter(item =>item.text.toLowerCase().includes(this.keyword.toLowerCase()))
}
},
methods: {
highlight(str) {
let reg = new RegExp(this.keyword, 'gi')
return str.replace(reg, '$</span>')
}
}
}
</script>
在這個例子中,我們首先在模板中創建了一個輸入框和一個無序列表。我們通過v-for指令來循環遍歷數據,并且在每個li元素中通過調用highlight方法進行關鍵詞高亮展示。
在data中我們定義了兩個數據,一個是keyword,用來存放用戶輸入的搜索關鍵詞,另外一個是dataList,代表我們的數據源。
在computed中我們定義了一個計算屬性itemList,該屬性會根據用戶輸入的關鍵詞篩選出符合條件的數據項并返回,我們通過v-for指令將itemList中的數據渲染到頁面中。
在methods中我們定義了一個highlight方法,該方法用來將關鍵詞在文本中高亮展示。在方法中我們首先通過RegExp對象創建了一個正則表達式,然后通過調用replace方法將匹配到的關鍵詞用<span>標簽包裹起來,并賦予其class為highlight,最后將處理后的文本返回。
通過這種方式,我們就可以實現Vue搜索高亮展示的功能。同時,我們也可以通過樣式表來為highlight類添加一些樣式規則,以實現更好的搜索體驗。