利用element-ui實(shí)現(xiàn)遠(yuǎn)程搜索兩種實(shí)現(xiàn)方式
1. 實(shí)現(xiàn)效果:

2. 利用el-autocomplete實(shí)現(xiàn)遠(yuǎn)程搜索
el-autocomplete是使用fetch-suggestions方法實(shí)現(xiàn),當(dāng)輸入的時(shí)候,會(huì)調(diào)用我們提供的方法,傳入的參數(shù)是輸入的value,以及callback。
把請(qǐng)求到的下拉列表通過(guò)callback返回(列表的每一項(xiàng)以key為value的形式傳,也可以通過(guò)value-key換成其key)
<el-autocomplete v-model="namenick" :fetch-suggestions="searchNameNick"
placeholder="請(qǐng)輸入內(nèi)容" :trigger-on-focus="false" @select="searchNickhandle">
</el-autocomplete>
// :fetch-suggestions="searchNameNick" : 返回獲取到數(shù)據(jù)的方法,也就是說(shuō)輸入框一獲取焦點(diǎn)。就會(huì)自動(dòng)調(diào)用該方法拿到數(shù)據(jù)。
// select="handleSelect" : 當(dāng)選中建議項(xiàng)時(shí),調(diào)用該方法。
async searchNameNick(queryString, callBack){
//整理參數(shù)
const params ={
nickname:queryString,
sys_code:4,
page:1,
page_size:100
}
// 定義空數(shù)組來(lái)接收返回的數(shù)據(jù)
let nicknameList = []
let res = await this.$proxy({
url: `xxxx`,
method: 'get',
params
})
if(res.code == 0){
//如果搜索結(jié)果為空返回“無(wú)匹配結(jié)果”
if(res.data.items.length == 0){
nicknameList.push({
value :"無(wú)匹配結(jié)果",
id : -1
})
callBack(nicknameList)
}else{
//對(duì)獲取的值進(jìn)行遍歷,調(diào)整數(shù)據(jù)結(jié)構(gòu),value
for (let i = 0; i < res.data.items.length; i++) {
//需要注意的是回顯的值必須是一個(gè)對(duì)象數(shù)組,且對(duì)象屬性名稱(chēng)是 “value”,不然回顯失敗
nicknameList.push({
value: res.data.items[i].nickname,
id: res.data.items[i].user_id
})
}
clearTimeout(this.timeout)
this.timeout = setTimeout(() => {
callBack(nicknameList)
//通過(guò)callBack函數(shù)將回顯數(shù)據(jù)返回
}, 1000)
}
}else{
this.$message({
type: 'error',
message: '請(qǐng)求失敗'
});
}
},
searchNickhandle(item) {
if (item.id !== -1) {
console.log(item.id, '昵稱(chēng)點(diǎn)擊回調(diào)');
this.user_id = item.id
}
},3. 利用el-select實(shí)現(xiàn)遠(yuǎn)程搜索
el-select的遠(yuǎn)程搜索是通過(guò)remote-method來(lái)實(shí)現(xiàn)。當(dāng)你輸入的時(shí)候,會(huì)調(diào)用對(duì)應(yīng)的remote- method方法來(lái)實(shí)現(xiàn)。參數(shù)是傳入當(dāng)前輸入的value值。 然后我們請(qǐng)求后,把el-select的option賦 值就可以了。
<el-select
v-model="value"
filterable
remote
reserve-keyword
placeholder="請(qǐng)輸入關(guān)鍵詞"
:remote-method="remoteMethod"
:loading="reqLoading"
>
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
export default {
data () {
return {
value: '',
reqLoading: false,
options: []
}
},
methods: {
remoteMethod (query) {
if (query !== '') {
this.reqLoading = true
setTimeout(() => {
this.reqLoading = false
this.options = [{label: '答案cp3',value: '答案cp3'}]
}, 200)
} else {
this.options = []
}
}
}4. 總結(jié):
- el-autocomplete主要是針對(duì)輸入建議,value會(huì)實(shí)時(shí)刷新,選中不會(huì)有選中效果。
- el-select value不會(huì)實(shí)時(shí)刷新,選中才會(huì)更新value,并且選中會(huì)有選中效果
到此這篇關(guān)于element-ui的兩種遠(yuǎn)程搜索實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)element-ui遠(yuǎn)程搜索內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS實(shí)現(xiàn)超炫網(wǎng)頁(yè)煙花動(dòng)畫(huà)效果的方法
這篇文章主要介紹了JS實(shí)現(xiàn)超炫網(wǎng)頁(yè)煙花動(dòng)畫(huà)效果的方法,實(shí)例分析了javascript實(shí)現(xiàn)煙花動(dòng)畫(huà)效果的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
JavaScript中的break語(yǔ)句和continue語(yǔ)句案例詳解
本文詳細(xì)介紹了JavaScript中的break和continue語(yǔ)句的用法及其應(yīng)用場(chǎng)景,break用于提前退出循環(huán),而continue用于跳過(guò)當(dāng)前迭代,還介紹了標(biāo)簽化的break和continue,以及如何在實(shí)際編程中合理使用這些語(yǔ)句以提高代碼的效率和可讀性,感興趣的朋友一起看看吧2025-03-03
JS實(shí)現(xiàn)中英文混合文字溢出友好截取功能
這篇文章主要介紹了JS實(shí)現(xiàn)中英文混合文字溢出友好截取功能,通常會(huì)用到j(luò)s的 substr 或者 substring方法, 以及 字符串的length屬性。需要的朋友可以參考下2018-08-08
微信小程序頁(yè)面間傳值與頁(yè)面取值操作實(shí)例分析
這篇文章主要介紹了微信小程序頁(yè)面間傳值與頁(yè)面取值操作,結(jié)合實(shí)例形式分析了微信小程序頁(yè)面間傳值及頁(yè)面取值操作相關(guān)實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下2019-04-04
JavaScript存儲(chǔ)方式Cookie到IndexedDB全解析
這篇文章主要介紹了JavaScript存儲(chǔ)方式Cookie到IndexedDB的相關(guān)資料,IndexedDB是一種客戶端存儲(chǔ)技術(shù),允許Web應(yīng)用程序在用戶的瀏覽器中存儲(chǔ)和檢索數(shù)據(jù),即使在沒(méi)有網(wǎng)絡(luò)連接的情況下也能工作,需要的朋友可以參考下2026-01-01
微信小程序開(kāi)發(fā)之組件設(shè)計(jì)規(guī)范
這篇文章主要給大家介紹了關(guān)于微信小程序開(kāi)發(fā)之組件設(shè)計(jì)規(guī)范的相關(guān)資料,對(duì)剛?cè)腴T(mén)學(xué)習(xí)微信小程序的同學(xué)們還是挺有幫助的,需要的朋友可以參考下2021-05-05
JavaScript?雙位非運(yùn)算(~~?操作符)使用場(chǎng)景實(shí)例探索
本文為大家介紹JavaScript中雙位非運(yùn)算?~~,?~~?操作符是一個(gè)強(qiáng)大且經(jīng)常被忽視的特性,它提供了一種快速、簡(jiǎn)潔的方式來(lái)處理數(shù)字和執(zhí)行類(lèi)型轉(zhuǎn)換,通常可以被用于數(shù)學(xué)計(jì)算和類(lèi)型轉(zhuǎn)換,我們先了解一下?~~?的基本概念和它的一些應(yīng)用場(chǎng)景2024-01-01
javascript刪除元素節(jié)點(diǎn)removeChild()用法實(shí)例
這篇文章主要介紹了javascript刪除元素節(jié)點(diǎn)removeChild()用法,實(shí)例分析了removeChild()方法移除節(jié)點(diǎn)的使用技巧,需要的朋友可以參考下2015-05-05

