亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

vue做一個搜索,每次按下鍵盤都會請求一次?

vue做一個搜索,每次按下鍵盤都會請求一次?

Smart貓小萌 2019-03-14 17:15:45
一個類似微信的搜索,沒有“搜索”按鈕,就一個input框。<input @keyup="load_list($event)">現在一個問題:輸入“ABCD”向后臺發送了4次請求A一次B一次C一次D一次于是我加了定時器,1秒后發送請求:輸入“ABCD”向后臺發送了4次請求ABCD一次ABCD一次ABCD一次ABCD一次我要瘋了,有好的解決方法么?
查看完整描述

9 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

寫定時器是完全可以實現的 每次輸入的時候都要先清除定時器 然后再新開一個定時器 什么時候時間到了 什么時候才會觸發。example:


全局:let timer = null;

method:{

    load_list(){

        clearInterval(timer);

        timer = setInterval(()=>{

            Ajax();

        }, 1000)

    }

}

try one try.


查看完整回答
反對 回復 2019-04-11
?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

你需要防抖(debounce)函數


查看完整回答
反對 回復 2019-04-11
?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

比較簡單穩定的方法:引入 lodash。
如果想控制輸入后函數執行的頻率,使用 lodash 中的 debounce 模塊。
參考鏈接

查看完整回答
反對 回復 2019-04-11
?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

跟vue沒關系,你用的keyup事件,就是每次按鍵了抬起就觸發一次,你可以寫個定時器,沒問題,但是要用setinterval,var aa = setinterval(); 設置一個輸入時限,入過在時限內,就clearInterval(aa),然后再加setinterval.


查看完整回答
反對 回復 2019-04-11
?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

輸入之后設置個定時器來控制請求,如果又監聽到鍵盤的輸入操作,取消定時器,如果沒有就請求


查看完整回答
反對 回復 2019-04-11
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

用@input事件即可。改動最小


查看完整回答
反對 回復 2019-04-11
?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

  • 推薦@input事件

  • 首先你要搞清楚你搜索的規則(字符串length..)達到這個規則再進行請求


查看完整回答
反對 回復 2019-04-11
  • 9 回答
  • 0 關注
  • 1120 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號