91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于element-ui中el-select下拉框選項過多怎么優化

發布時間:2023-05-05 16:57:19 來源:億速云 閱讀:252 作者:iii 欄目:開發技術

這篇“基于element-ui中el-select下拉框選項過多怎么優化”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“基于element-ui中el-select下拉框選項過多怎么優化”文章吧。

    element-ui中el-select下拉框選項過多

    el-select中options數據超過3000條就會造成前端頁面明顯卡頓,本次我的遇到的業務場景數據是近2w條,因此在不優化的情況下頁面壓根無法使用,下面給出我的優化過程。

    一種優化思路

    element-ui的select有一個remote-method,支持遠程搜索,我們讓服務端支持一下不就可以了,當然這是一種解決的方案。

    但是有時候這種方法對我并能夠不適用,因為這樣會出現回顯問題,回顯的時候是還需拿到所需option;

    我的做法

    element-ui的select有一個fildter-method方法,我們可以通過這個方法來進行過濾下拉項

    假設我們有個下拉框是用來選擇用戶的

    <el-select
      v-model="userId"
      filterable
      :filter-method="userFilter"
      clearable>
      <el-option
        v-for="item in userList"
        :key="item.userId"
        :label="item.username"
        :value="item.userId"
      ></el-option>
    </el-select>

    在這里將userId封裝成v-model:

    props: {
            value: {
                type: [String, Number],
                default: ''
            }
        },
    computed: {
            userId: {
                get () {
                    return this.value || ''
                },
                set (value) {
                    this.$emit('input', value)
                }
            }
        },

    獲取option數據及過濾方法:

    userFilter(query = '') {
      let arr = this.allUserList.filter((item) => {
        return item.username.includes(query) || item.userId.includes(query)
      })
      if (arr.length > 50) {
        this.userList = arr.slice(0, 50)
      } else {
        this.userList = arr
      }
    },
    getUserWhiteList() {
      HttpRequest.post("/api/admin/community/getUserWhiteList").then(
        response => {
          this.allUserList = response.data.list;
          this.userFilter()
        }
      );
    },

    需要注意的是在回顯時要從總的option(allUserList)中拿到所需要會顯的值,并加入到顯示的option(userList)中:

    addValueOptions () {
                if (this.userId) {
                    let target = this.allUserList.find((item) => { // 從大option中找到當前條
                        return item.value === this.userId
                    })
                    if (target) { // 將當前條與小option比對,沒有則加入
                        if (this.userList.every(item => item.value !== target.value)) {
                            this.userList.unshift(target)
                        }
                    }
                }
            },

    ok,問題解決。

    element-ui中el-select下拉框數據過多,用pinyin-match實現拼音、首字母、漢字等模糊搜索

    人狠話不多,上圖!

    基于element-ui中el-select下拉框選項過多怎么優化

    pinyin-match庫

    也是項目需要,由于下拉框的數據過多,使用人員不好選擇,就做個拼音,大小寫字母以及漢字的模糊搜索,結果就找到來這個 pinyin-match庫,能夠使用拼音快速檢索目標。

    在項目中的使用步驟

    第一步:安裝pinyin-match

    // 安裝 pinyin-match npm install pinyin-match --save

    第二步:在需要的組件中使用

    利用el-select的filterable 屬性和filter-method方法使用模糊搜索

    <template>
    	<el-select v-model="formInline.brandId" @change="changeBrand" filterable :filter-method="pinyingMatch" placeholder="請選擇"   >
    	   <el-option :label="item.label" :value="item.value" v-for="(item,index ) in brand" :key="item.value"></el-option>
    	</el-select>
    </template>
    
    <script>
        export default{
            data(){
              return{
              brand:[],//下拉框所有數據
              copyBrand:[]
              }
            },
            methods:{
                //獲取所有的品牌
                 async getBrand(){
    	            const response = await reqLimitBranch()
    	            this.brand = response.data
    	            //把所有的品牌在賦值copyBrand
    	            this.copyBrand = this.brand
                  },
    		          //下拉框設置拼音模糊搜索
    		      pinyingMatch(val){
    		         const pinyingMatch = require('pinyin-match')
    		         if(val){
    		             var result = []
    		             //
    		             this.copyBrand.forEach( e => {
    		               var m = pinyingMatch.match(e.label, val)
    		               if( m){
    		                   result.push(e)
    		               }
    		             })
    		             //搜索到相應的數據就把符合條件的n個數據賦值brand 
    		             this.brand = result
    		         }else{
    		           //沒有搜索到數據,就還展示所有的brand 
    		           this.brand = this.copyBrand
    		         }
    		      },
            }
        }
        
    </script>

    這樣就可以實現下拉框選擇器的拼音、字母以及漢字的模糊搜索啦!

    以上就是關于“基于element-ui中el-select下拉框選項過多怎么優化”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    察隅县| 东海县| 清苑县| 调兵山市| 大姚县| 民和| 新巴尔虎右旗| 淮滨县| 常德市| 道真| 娄烦县| 明溪县| 临江市| 长治市| 八宿县| 方正县| 崇州市| 六枝特区| 玉溪市| 安溪县| 河间市| 呼图壁县| 闵行区| 宁晋县| 博罗县| 万年县| 苍南县| 大足县| 云霄县| 犍为县| 民乐县| 长春市| 安达市| 得荣县| 化州市| 轮台县| 木里| 武宣县| 九龙坡区| 瓮安县| 恭城|