Element-ui的el-autocomplete的使用

el-autocomplete的簡單使用及遇到的坑

// 使用
  <el-autocomplete
        clearable
        @clear="setBlur()"
        @input="handle"
        v-show="listType =='class'"
        v-model="search"
        :fetch-suggestions="querySearch"
        placeholder="請輸入檢索內(nèi)容"
        :trigger-on-focus="false"
        @select="handleSelect"
      ></el-autocomplete>



methods: {
   setBlur() {
      //  在點擊由 clearable 屬性生成的清空按鈕時,主動觸發(fā)失去焦點,解決‘fetch-suggestions’輸入建議不提示的bug
      document.activeElement.blur()
    },
    // 清空輸入框頁面重置
    handle (val) {
      if (val == '' ) {
        this.init() // 頁面重置的代碼
      }
    },
    //過濾項目和class
    async querySearch(queryString, cb) {
        if(queryString && queryString.length>0){
          this.search = queryString
          try {
            const data = await getAllClass(this.search) //search定義在data里
          // 賦值給建議列表,渲染到頁面
            var list = data.list
            // 如果list.length等于0,則代表沒有匹配到結(jié)果。手動給list添加一條提示信息
            if (list.length == '0') {
              list.push({
                id: '-1',
                value: '無匹配結(jié)果'
             })
            // 調(diào)用 callback 返回建議列表的數(shù)據(jù)
              cb(list);
            } else {
              list = list.map(item=>{
              return {
                value:`${item.projectName}`,
                id: `${item.id}`
              }
             })
            // 調(diào)用 callback 返回建議列表的數(shù)據(jù)
             cb(list);
            }
          } catch (error) {
            console.log(error)
          }
        }
     },
    // 選中 input 提示的某一條
    async handleSelect(item) {
      // item.id等于 -1時,代表沒有匹配到任何結(jié)果
      if(item.id != -1){
        this.search = item.value
        const data = await getAllClassList(this.search)
        this.tablet = data.list  // 拿到數(shù)據(jù)進(jìn)行渲染
      }
    },
}
未匹配到結(jié)果時,返回建議列表的數(shù)據(jù)沒數(shù)據(jù)時閃一下的問題。
  • 可以在拿到后端返回的數(shù)據(jù)時,判斷數(shù)組長度,如果length為0,則代表沒有匹配到結(jié)果。
    手動給list添加一條提示信息,并在 handleSelect方法中,判斷,點擊的數(shù)據(jù)是否為手動添加的提示信息,如果不是,再攜帶數(shù)據(jù)去發(fā)送請求。
  • 如果有更好用的方法,歡迎指點


    image.png
擊由 clearable 屬性生成的清空按鈕時產(chǎn)生的bug
  • 在點擊清空按鈕時,繼續(xù)輸入檢索內(nèi)容,這時候發(fā)現(xiàn)沒有繼續(xù)觸發(fā)事件。
    解決方法:點擊清空的叉叉之后,主動觸發(fā)失去焦點。@clear="setBlur()"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容