您好,登錄后才能下訂單哦!
這篇文章主要介紹如何解決el-select數據過多懶加載問題,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
el-select數據過多處理方式
在日常項目中el-select組件的使用頻率是非常之高的. 當數據過多時渲染時間非常長, 這里提供幾個處理方式.
遠程搜索
組件提供了遠程搜索方式, 也就是按照你輸入的結果匹配選項.
下拉懶加載loadMore
下拉懶加載, 當select滾動到底部時, 你再去請求一部分數據, 加入到當前數據中.
某組件中:
<template> <el-select v-model="value" placeholder="請選擇" filterable multiple v-el-select-loadmore="loadmore" > <el-option v-for="item in options" :key="item.id" :label="item.label" :value="item.id"> </el-option> </el-select> </template> export default { directives: { 'el-select-loadmore': { bind(el, binding) { // 獲取element-ui定義好的scroll盒子 const SELECTWRAP_DOM = el.querySelector('.el-select-dropdown .el-select-dropdown__wrap'); SELECTWRAP_DOM.addEventListener('scroll', function () { /** * scrollHeight 獲取元素內容高度(只讀) * scrollTop 獲取或者設置元素的偏移值,常用于, 計算滾動條的位置, 當一個元素的容器沒有產生垂直方向的滾動條, 那它的scrollTop的值默認為0. * clientHeight 讀取元素的可見高度(只讀) * 如果元素滾動到底, 下面等式返回true, 沒有則返回false: * ele.scrollHeight - ele.scrollTop === ele.clientHeight; */ const condition = this.scrollHeight - this.scrollTop <= this.clientHeight; if (condition) { binding.value(); } }); } } }, data() { return { value: '', options: [], formData: { pageIndex: 1, pageSize: 20, } }; }, mounted() { this.getList(this.formData); }, methods: { loadmore() { this.formData.pageIndex++; this.getList(this.formData); }, getList(formData) { // 這里是接口請求數據, 帶分頁條件 const _res = [1, 2, 3]; // 請求得到的數據 this.options = [...this.options, ..._res]; } } };
這樣就做到了滾動懶加載, 具體細節在應用時修改.
問題
這樣渲染問題解決了, 隨之會出現一個問題, 就是當你的value為選中的數據后, 分頁數大的數據.
當頁數小時, options數據中沒有當前value的那一個, value就會顯示為得到的id.
當你選中后你要保存下來當前的id以及lable, 下次過來時, 帶入當前組件, 手動放在options中,這樣就解決了這個問題.
以上是“如何解決el-select數據過多懶加載問題”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。