利用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ì)象屬性名稱是 “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, '昵稱點(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 本地預(yù)覽的簡(jiǎn)單實(shí)現(xiàn)方法
本篇文章主要是對(duì)js本地預(yù)覽的簡(jiǎn)單實(shí)現(xiàn)方法進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-02-02js報(bào)$ is not a function 的問(wèn)題的解決方法
在html中的程序,跑的好好的,換成jsp在項(xiàng)目中跑,就一直報(bào)$ is not a function錯(cuò),針對(duì)此問(wèn)題,下面有個(gè)不錯(cuò)的解決方法,大家可以嘗試操作下2014-01-01基于JavaScript實(shí)現(xiàn)在新的tab頁(yè)打開url
這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)在新的tab頁(yè)打開url 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08JavaScript實(shí)現(xiàn)離開頁(yè)面前提示功能【附j(luò)Query實(shí)現(xiàn)方法】
這篇文章主要介紹了JavaScript實(shí)現(xiàn)離開頁(yè)面前提示功能,結(jié)合具體實(shí)例形式分析了javascript實(shí)現(xiàn)針對(duì)關(guān)閉頁(yè)面的事件響應(yīng)原理與操作技巧,并附帶jQuery的相應(yīng)實(shí)現(xiàn)方法,需要的朋友可以參考下2017-09-09Uniapp中使用Echarts的詳細(xì)過(guò)程
這篇文章主要介紹了Uniapp中使用Echarts的示例詳解這里只舉例折線圖,介紹了uni-app微信小程序使用echarts的方法,下載echart組件,可以先隨便建個(gè)文件夾,然后 npm init,接著下載依賴,需要的朋友可以參考下2022-11-11