国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > JS > 正文

el-select數(shù)據(jù)過(guò)多懶加載的解決(loadmore)

2024-05-06 16:51:33
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

el-select數(shù)據(jù)過(guò)多處理方式

在日常項(xiàng)目中el-select組件的使用頻率是非常之高的. 當(dāng)數(shù)據(jù)過(guò)多時(shí)渲染時(shí)間非常長(zhǎng), 這里提供幾個(gè)處理方式.

遠(yuǎn)程搜索

組件提供了遠(yuǎn)程搜索方式, 也就是按照你輸入的結(jié)果匹配選項(xiàng).

下拉懶加載loadMore

下拉懶加載, 當(dāng)select滾動(dòng)到底部時(shí), 你再去請(qǐng)求一部分?jǐn)?shù)據(jù), 加入到當(dāng)前數(shù)據(jù)中.

某組件中:

<template>  <el-select    v-model="value"    placeholder="請(qǐng)選擇"    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 獲取元素內(nèi)容高度(只讀)          * scrollTop 獲取或者設(shè)置元素的偏移值,常用于, 計(jì)算滾動(dòng)條的位置, 當(dāng)一個(gè)元素的容器沒(méi)有產(chǎn)生垂直方向的滾動(dòng)條, 那它的scrollTop的值默認(rèn)為0.          * clientHeight 讀取元素的可見高度(只讀)          * 如果元素滾動(dòng)到底, 下面等式返回true, 沒(méi)有則返回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) {      // 這里是接口請(qǐng)求數(shù)據(jù), 帶分頁(yè)條件      const _res = [1, 2, 3]; // 請(qǐng)求得到的數(shù)據(jù)      this.options = [...this.options, ..._res];    }  }};

這樣就做到了滾動(dòng)懶加載, 具體細(xì)節(jié)在應(yīng)用時(shí)修改.

問(wèn)題

這樣渲染問(wèn)題解決了, 隨之會(huì)出現(xiàn)一個(gè)問(wèn)題, 就是當(dāng)你的value為選中的數(shù)據(jù)后, 分頁(yè)數(shù)大的數(shù)據(jù).

當(dāng)頁(yè)數(shù)小時(shí), options數(shù)據(jù)中沒(méi)有當(dāng)前value的那一個(gè), value就會(huì)顯示為得到的id.

當(dāng)你選中后你要保存下來(lái)當(dāng)前的id以及l(fā)able, 下次過(guò)來(lái)時(shí), 帶入當(dāng)前組件, 手動(dòng)放在options中,這樣就解決了這個(gè)問(wèn)題.

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JavaScript/Ajax教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 东宁县| 晋州市| 紫金县| 香格里拉县| 上高县| 师宗县| 共和县| 察哈| 都昌县| 东安县| 遂昌县| 湖南省| 玛曲县| 肇东市| 绵阳市| 肇庆市| 呼玛县| 古交市| 玛沁县| 宝丰县| 鲁山县| 莎车县| 黄浦区| 浠水县| 卢龙县| 德阳市| 南汇区| 延安市| 武清区| 信宜市| 昭通市| 廊坊市| 桂阳县| 扎囊县| 淮北市| 沁源县| 治多县| 日照市| 鄂伦春自治旗| 太湖县| 昆山市|