el-select數(shù)據過多懶加載的解決(loadmore)
el-select數(shù)據過多處理方式
在日常項目中el-select組件的使用頻率是非常之高的. 當數(shù)據過多時渲染時間非常長, 這里提供幾個處理方式.
遠程搜索
組件提供了遠程搜索方式, 也就是按照你輸入的結果匹配選項.
下拉懶加載loadMore
下拉懶加載, 當select滾動到底部時, 你再去請求一部分數(shù)據, 加入到當前數(shù)據中.
某組件中:
<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) {
// 這里是接口請求數(shù)據, 帶分頁條件
const _res = [1, 2, 3]; // 請求得到的數(shù)據
this.options = [...this.options, ..._res];
}
}
};
這樣就做到了滾動懶加載, 具體細節(jié)在應用時修改.
問題
這樣渲染問題解決了, 隨之會出現(xiàn)一個問題, 就是當你的value為選中的數(shù)據后, 分頁數(shù)大的數(shù)據.
當頁數(shù)小時, options數(shù)據中沒有當前value的那一個, value就會顯示為得到的id.
當你選中后你要保存下來當前的id以及l(fā)able, 下次過來時, 帶入當前組件, 手動放在options中,這樣就解決了這個問題.
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
實例詳解BootStrap的動態(tài)模態(tài)框及靜態(tài)模態(tài)框
要用bootStrap這個框架就必須要重載它的class類,也就是說class要一樣。接下來通過實例代碼給大家介紹BootStrap的動態(tài)模態(tài)框及靜態(tài)模態(tài)框,需要的朋友可以參考下2018-08-08
純js代碼實現(xiàn)未知寬高的元素在指定元素中垂直水平居中顯示
本章節(jié)介紹一下如何實現(xiàn)未知寬高的元素在指定元素下實現(xiàn)垂直水平居中效果,代碼簡單易懂,需要的朋友可以參考下本文2015-09-09
JSON創(chuàng)建鍵值對(key是中文或者數(shù)字)方式詳解
這篇文章主要介紹了JSON創(chuàng)建鍵值對(key是中文或者數(shù)字)方式詳解,需要的朋友可以參考下2017-08-08
利用js將ajax獲取到的后臺數(shù)據動態(tài)加載至網頁中的方法
今天小編就為大家分享一篇利用js將ajax獲取到的后臺數(shù)據動態(tài)加載至網頁中的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08

