element-ui帶輸入建議的input框踩坑(輸入建議空白以及會閃出上一次的輸入建議問題)
前段時間,在實(shí)現(xiàn)帶輸入建議并且支持模糊查詢輸入框的時候,發(fā)現(xiàn)了兩個值得注意的小地方。整理出來,以供借鑒。
廢話不多說,直接來解決問題。
踩坑問題描述:
問題一:
獲取到后端返回的數(shù)組,并將數(shù)組傳入作為 results 傳入 callback 后,焦點(diǎn)放在 輸入框 上的時候,并未出現(xiàn)任何內(nèi)容,只出現(xiàn)了一個不完整的空白框。
問題解決方案:
這個問題開始我以為是傳進(jìn) callback 的 data 格式不對。Element官網(wǎng)上是這么寫的:
我傳入的是對象數(shù)組,是沒問題的。
后來我仔細(xì)閱讀了 Elemen t帶建議查詢輸入框的 Demo 代碼并查閱相關(guān)資料發(fā)現(xiàn),輸入建議列表的數(shù)據(jù)只來源于
data:[] 中的 value 字段!?。?/p>
于是,我將后端傳回的 response 處理了,將 response 中需要展示的字段組成 {value:'輸入建議'} 這種格式,問題解決。
searchAppNodeApi(searchQuery).then((response) => {
this.loadAll = response.data
this.devEuiArr = [];
for (var i = 0; i < this.loadAll.length; i++) {
this.devEuiArr.push({"value1": this.loadAll[i].dev_eui})
}
})
searchAppNodeApi() 是我請求后端的api方法,拿到請求成功的回調(diào)函數(shù)的 response 參數(shù)。但是, response 里面包含很多我不需要的字段,我只需要其中的 dev_eui 字段。因此,循環(huán) response.data 將其中每條的 dev_eui 重組成 {value:'輸入建議'} 的格式并 push 進(jìn)聲明的新數(shù)組 devEuiArr。
打印如下:

正確效果如下:

問題二:
成功出現(xiàn)輸入建議列表后,出現(xiàn)一個新的問題,并且 Element 官網(wǎng)的 Demo 代碼并未闡述這種情況,就是當(dāng)我獲取到輸入建議列表后,切換成另一個輸入建議列表,會先閃一下上一個出現(xiàn)的輸入建議列表,切換后的輸入列表為空也會閃出上個輸入建議列表,就算手動清空 callback(data:[]) 中的 data 數(shù)組也無濟(jì)于事。

問題解決方案:
這個問題開始我以為是需要返回?cái)?shù)據(jù)后手動清空 callback 里面的 data 數(shù)組,像下面這樣:
//聯(lián)想查詢時觸發(fā)
querySearch(queryString, callback) {
var results = queryString ? this.devEuiArr.filter(this.createFilter(queryString)) : this.devEuiArr
// 調(diào)用 callback 返回建議列表的數(shù)據(jù)
callback(results)
results = ''
}
但是一點(diǎn)作用沒起,也就是跟變量緩存沒什么關(guān)系,后來我在 Element 官網(wǎng)的一個小角落發(fā)現(xiàn)這么一個參數(shù):

debounce ? 函數(shù)去抖 ? 應(yīng)該就是它了!
(PS:不了解函數(shù)去抖和函數(shù)節(jié)流的同學(xué)可以閱讀我的下一篇博文。)
debounce 的默認(rèn)值是 300ms,我們將其設(shè)置為 0ms。
<el-autocomplete
placeholder="請輸入DEVEUI"
v-model="searchDeveuiVal"
clearable
:fetch-suggestions="querySearch"
size="small"
:debounce=0
@keyup.enter.native="searchAppNode">
</el-autocomplete>
正確效果如下:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue axios庫避免重復(fù)發(fā)送請求的示例介紹
Axios是一個基于promise的HTTP庫,可以用在瀏覽器和node.js中。axios是目前最優(yōu)秀的HTTP請求庫之一,我們封裝axios請求也是為了讓代碼看的更加清晰,后期好維護(hù)2023-02-02
解決打包后出現(xiàn)錯誤y.a.addRoute is not a function的
這篇文章主要介紹了解決打包后出現(xiàn)y.a.addRoute is not a function的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10
vue-router兩種模式區(qū)別及使用注意事項(xiàng)詳解
這篇文章主要介紹了vue-router兩種模式區(qū)別及使用注意事項(xiàng),結(jié)合實(shí)例形式詳細(xì)分析了vue-router兩種模式hash模式與history模式的區(qū)別、用法與操作注意事項(xiàng),需要的朋友可以參考下2019-08-08
vue項(xiàng)目回到頂部的兩種超簡單實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目回到頂部的兩種超簡單實(shí)現(xiàn)方法,?頁面切換回到頂部是一個很常見的功能,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10
解決vue中使用Axios調(diào)用接口時出現(xiàn)的ie數(shù)據(jù)處理問題
今天小編就為大家分享一篇解決vue中使用Axios調(diào)用接口時出現(xiàn)的ie數(shù)據(jù)處理問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
Vue3中子組件改變父組件傳過來的值(props)的方法小結(jié)
在 Vue 3 中,子組件改變父組件傳過來的值(props)的方法主要有以下幾種:通過事件發(fā)射、使用 v-model、模擬 .sync 修飾符的功能(Vue 3 中已移除),以及使用 ref 或 reactive,下面我將結(jié)合代碼示例和使用場景詳細(xì)講解這些方法,需要的朋友可以參考下2025-04-04
Vue3+Element?Plus的項(xiàng)目搭建過程詳解
這篇文章主要為大家介紹了Vue3+Element?Plus的項(xiàng)目搭建過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
vue面試created中兩次數(shù)據(jù)修改會觸發(fā)幾次頁面更新詳解
這篇文章主要為大家介紹了vue面試created中兩次數(shù)據(jù)修改會觸發(fā)幾次頁面更新問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12

