vue+Element實(shí)現(xiàn)搜索關(guān)鍵字高亮功能
最近做了一個(gè)日志搜索的需求,要在頁(yè)面上實(shí)現(xiàn)海量日志的關(guān)鍵字搜索。為了搜索更清晰,我最終實(shí)現(xiàn)了多條件搜索,且搜索結(jié)果的記錄中的關(guān)鍵字全部高亮。
一、實(shí)現(xiàn)思路
1 實(shí)時(shí)監(jiān)控表格,實(shí)現(xiàn)關(guān)鍵字的定位;
2 點(diǎn)擊搜索按鈕以后,實(shí)現(xiàn)記錄中關(guān)鍵字的樣式變化(即高亮)。
二、實(shí)現(xiàn)過(guò)程
1 搜索條件表單
了解了實(shí)現(xiàn)思路,就讓我們一起來(lái)看一下實(shí)現(xiàn)過(guò)程(關(guān)鍵位置均給了注釋)
<el-form :inline="true" :model="formQuery" > <el-row> <el-col :span="8"> <el-form-item label="日志編碼" > <el-input v-model="formQuery.queryMessage1" ></el-input> </el-form-item> </el-col> <el-col :span="8" > <el-form-item label="日志編碼2"> <el-input v-model="formQuery.queryMessage2" ></el-input> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="20"> <el-form-item label="日志編碼3"> <el-input v-model="formQuery.queryMessage3" ></el-input> </el-form-item> </el-col> <el-col :span="4"> <el-form-item> <el-button @click="loadData()" >查詢</el-button> </el-form-item> </el-col> </el-row> </el-form>
2 表格部分
<el-table :fit="true" ref="logInfosData" max-height="700" :data="logInfosData"
element-loading-text="loading" :highlight-current-row="true"
size="mini" >
<el-table-column prop="_source.message" :label="$t('Loginformation')" sortable >
<template slot-scope="scope">
<span v-html="showData(message)"
== <!--注意此處的寫法,該函數(shù)showData返回的結(jié)果是一段HTML代碼,在這里是直接進(jìn)行填充,填充的內(nèi)容是修改了關(guān)鍵字樣式以后的內(nèi)容。-->==
></span>
</template>
</el-table-column>
</el-table>
3.實(shí)時(shí)監(jiān)聽表格
computed:{
// 實(shí)時(shí)監(jiān)聽表格
tables: function() {
const search = this.listQuery.queryMessage||this.listQuery.queryMessage2||this.listQuery.queryMessage3
if (search) {
return this.logInfosData.filter(dataNews => {
return Object.keys(dataNews).some(key => {
return String(dataNews[key]).toLowerCase().indexOf(search) > -1
})
})
}
return this.tableData
}
}
4.修改關(guān)鍵字樣式
// 篩選變色
showData(val) {
val = val + '';
if (this.checkPara(val,this.listQuery.queryMessage)||this.checkPara(val,this.listQuery.queryMessage2)
||this.checkPara(val,this.listQuery.queryMessage3)) {
//如果搜索結(jié)果記錄包含關(guān)鍵字中的任何一個(gè),那么修改樣式
return val.replace(this.listQuery.queryMessage'<font color="#409EFF">' + this.listQuery.prodcd + '</font>')
.replace(this.listQuery.queryMessage2, '<font color="#409EFF">' + this.listQuery.queryMessage3 + '</font>')
} else {
return val //不做任何修改
}
},
//判斷搜索記錄是否包含某個(gè)關(guān)鍵字
checkPara(val,para){
if (val.indexOf(para) !== -1 && para !== ''){
return true;
}else {
return false
}
}
三、總結(jié)
實(shí)現(xiàn)以后會(huì)覺得思路很簡(jiǎn)單。其實(shí)任何一個(gè)多么復(fù)雜的需求,只要在做之前,理清思路,分成一個(gè)個(gè)小的實(shí)現(xiàn)過(guò)程,那么就自然很簡(jiǎn)單,而且效率也很高。這也是我的真切感受。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解決iView Table組件寬度只變大不變小的問(wèn)題
這篇文章主要介紹了解決iView Table組件寬度只變大不變小的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
vue修改數(shù)據(jù)的時(shí)候,表單值回顯不正確問(wèn)題及解決
這篇文章主要介紹了vue修改數(shù)據(jù)的時(shí)候,表單值回顯不正確的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
Vue中使用element-ui給按鈕綁定一個(gè)單擊事件實(shí)現(xiàn)點(diǎn)擊按鈕就彈出dialog對(duì)話框
最近遇到了個(gè)需求是使用element-ui插件編寫頁(yè)面,點(diǎn)擊按鈕,彈出對(duì)話框,這篇文章主要給大家介紹了關(guān)于Vue中使用element-ui給按鈕綁定一個(gè)單擊事件實(shí)現(xiàn)點(diǎn)擊按鈕就彈出dialog對(duì)話框的相關(guān)資料,需要的朋友可以參考下2022-11-11
在Echarts圖中給坐標(biāo)軸加一個(gè)標(biāo)識(shí)線markLine
這篇文章主要介紹了在Echarts圖中給坐標(biāo)軸加一個(gè)標(biāo)識(shí)線markLine,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
vue3+Element?Plus?v-model實(shí)現(xiàn)父子組件數(shù)據(jù)同步的案例代碼
這篇文章主要介紹了vue3+Element?Plus?v-model實(shí)現(xiàn)父子組件數(shù)據(jù)同步,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-01-01
vue實(shí)現(xiàn)驗(yàn)證碼按鈕倒計(jì)時(shí)功能
最近項(xiàng)目結(jié)束,空閑時(shí)間比較多,今天小編抽時(shí)間給大家使用vue寫一個(gè)小例子,就決定做驗(yàn)證碼倒計(jì)時(shí)功能,具體實(shí)例代碼大家參考下本文2018-04-04
vue3實(shí)現(xiàn)數(shù)字滾動(dòng)特效實(shí)例詳解
這篇文章主要為大家介紹了vue3實(shí)現(xiàn)數(shù)字滾動(dòng)特效實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09

