在V-data-table中突出显示搜索结果,可以通过以下步骤实现:
<template>
<div>
<v-text-field v-model="searchKeyword" label="Search"></v-text-field>
<v-data-table
:headers="headers"
:items="items"
:search="searchKeyword"
></v-data-table>
</div>
</template>
<template>
<div>
<v-text-field v-model="searchKeyword" label="Search"></v-text-field>
<v-data-table
:headers="headers"
:items="items"
:search="searchKeyword"
>
<template v-slot:item="{ item }">
<tr>
<td v-for="(value, index) in item" :key="index">
<span v-html="highlight(value)"></span>
</td>
</tr>
</template>
</v-data-table>
</div>
</template>
<script>
export default {
data() {
return {
searchKeyword: '',
headers: [
{ text: 'Name', value: 'name' },
{ text: 'Age', value: 'age' },
// 添加其他表头
],
items: [
{ name: 'John Doe', age: 30 },
{ name: 'Jane Smith', age: 25 },
// 添加其他数据项
]
};
},
methods: {
highlight(value) {
if (this.searchKeyword && value) {
const regex = new RegExp(this.searchKeyword, 'gi');
return value.toString().replace(regex, match => `<b>${match}</b>`);
}
return value;
}
}
};
</script>
在highlight方法中,我们使用正则表达式将搜索关键字匹配的部分用<b>
标签包裹起来,以实现突出显示的效果。
这样,当用户在搜索输入框中输入关键字时,V-data-table会根据搜索关键字过滤数据,并将匹配的结果突出显示出来。
领取专属 10元无门槛券
手把手带您无忧上云