最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Element-Plus Select組件實(shí)現(xiàn)滾動(dòng)分頁(yè)加載功能

 更新時(shí)間:2024年03月19日 09:54:22   作者:曉風(fēng)伴月  
Element-Plus的select組件并沒(méi)有自帶滾動(dòng)分頁(yè)加載的功能,其雖然提供了自定義下拉菜單的底部的方式可以自定義上一頁(yè)及下一頁(yè)操作按鈕的方式進(jìn)行分頁(yè)加載切換,這篇文章主要介紹了Element-Plus Select組件實(shí)現(xiàn)滾動(dòng)分頁(yè)加載功能,需要的朋友可以參考下

Element-Plus的select組件并沒(méi)有自帶滾動(dòng)分頁(yè)加載的功能,其雖然提供了自定義下拉菜單的底部的方式可以自定義上一頁(yè)下一頁(yè)操作按鈕的方式進(jìn)行分頁(yè)加載切換:

但如果不想通過(guò)點(diǎn)擊分頁(yè)按鈕的方式,利用滾動(dòng)觸底進(jìn)行下一頁(yè)加載的話,可以利用Vue自定義指令實(shí)現(xiàn):

自定義指定的實(shí)現(xiàn)方式,在網(wǎng)絡(luò)上已經(jīng)有實(shí)現(xiàn)的代碼了,只不過(guò)需要在<el-select>上添加指定的popper-class(比如:popper-class=“single-select-loadmore”),這樣做主要是因?yàn)?code><el-select>默認(rèn)是將下拉列表插入至 body 元素(teleported=true),為了獲取下拉列表的實(shí)際Dom對(duì)象而額外添加了popper-class

 const selectDom = document.querySelector('.single-select-loadmore .el-select-dropdown__wrap')

這樣做略顯麻煩,不夠靈活。那么有沒(méi)有辦法,不設(shè)置額外的popper-class來(lái)獲取到對(duì)應(yīng)的下拉列表的Dom元素呢?Element-Plus文檔并沒(méi)有相關(guān)獲取下拉列表Dom的相關(guān)屬性,并且在<el-select>渲染的Dom和下拉列表的Dom元素在審查代碼時(shí)也沒(méi)有發(fā)現(xiàn)明顯的關(guān)聯(lián)性。但通過(guò)對(duì)mounted周期調(diào)試,發(fā)現(xiàn)了埋藏深處的popperRef.contentRef正是我們要找的下拉列表的Dom,于是代碼可以這樣實(shí)現(xiàn):

// src/directive/elSelectLoadMore.js
export default {
  mounted(el, binding, vnode) {
    const selectDom = vnode.children[0].component.refs.popperRef.contentRef.querySelector('.el-select-dropdown .el-select-dropdown__wrap');
    function loadMores() {
      // 判斷是否到底
      const isBottom = this.scrollHeight - this.scrollTop <= this.clientHeight;
      if (isBottom) {
        // 執(zhí)行事件回調(diào)
        binding.value && binding.value();
      }
    }
    // 將獲取到的dom和函數(shù)掛載到el-select上,以便實(shí)例銷毀時(shí)進(jìn)行事件移除處理
    el._selectDom = selectDom;
    el._selectLoadMore = loadMores;
    // 監(jiān)聽滾動(dòng)事件
    selectDom?.addEventListener('scroll', loadMores.bind(selectDom));
  },
  // 實(shí)例銷毀
  beforeUnmount(el) {
    if (el._selectLoadMore) {
      el._selectDom.removeEventListener('scroll', el._selectLoadMore);
      delete el._selectDom;
      delete el._selectLoadMore;
    }
  }
}
// src/directive/index.js
import elSelectLoadMore from './common/elSelectLoadMore'
export default function directive(app){
  app.directive('selectLoadmore', elSelectLoadMore)
}
// src/main.js
import App from './App'
import directive from './directive'
const app = createApp(App)
directive(app)

經(jīng)過(guò)簡(jiǎn)單測(cè)試,上述代碼可以正常實(shí)現(xiàn)分頁(yè)。需要注意的是上述selectDom的獲取方式?jīng)]有經(jīng)過(guò)充分測(cè)試,只作為實(shí)驗(yàn)性代碼。

到此這篇關(guān)于Element-Plus Select組件實(shí)現(xiàn)滾動(dòng)分頁(yè)加載的文章就介紹到這了,更多相關(guān)Element-Plus Select滾動(dòng)分頁(yè)加載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue?響應(yīng)式系統(tǒng)依賴收集過(guò)程原理解析

    Vue?響應(yīng)式系統(tǒng)依賴收集過(guò)程原理解析

    Vue 初始化時(shí)就會(huì)通過(guò) Object.defineProperty 攔截屬性的 getter 和 setter ,為對(duì)象的每個(gè)值創(chuàng)建一個(gè) dep 并用 Dep.addSub() 來(lái)存儲(chǔ)該屬性值的 watcher 列表,這篇文章主要介紹了Vue?響應(yīng)式系統(tǒng)依賴收集過(guò)程分析,需要的朋友可以參考下
    2022-06-06
  • VUE3 data()函數(shù)詳解

    VUE3 data()函數(shù)詳解

    Vue 3的data()函數(shù)是選項(xiàng)式 API 中聲明響應(yīng)式數(shù)據(jù)的入口,核心是通過(guò)返回對(duì)象配合 Proxy 實(shí)現(xiàn)響應(yīng)式,接下來(lái)通過(guò)本文介紹VUE3 data()函數(shù)的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • 教你一招解決vue頁(yè)面自適應(yīng)布局

    教你一招解決vue頁(yè)面自適應(yīng)布局

    在前端開發(fā)的時(shí)候經(jīng)常會(huì)遇到這樣的困惑,設(shè)計(jì)師給你的設(shè)計(jì)稿的尺寸和頁(yè)面的尺寸不一致,導(dǎo)致了頁(yè)面無(wú)法正常顯示,下面這篇文章主要給大家介紹了關(guān)于一招解決vue頁(yè)面自適應(yīng)布局的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Vue3動(dòng)態(tài)引入圖片全過(guò)程

    Vue3動(dòng)態(tài)引入圖片全過(guò)程

    在Vite項(xiàng)目中,動(dòng)態(tài)引入background-image需使用import或newURL方法,避免打包路徑問(wèn)題,靜態(tài)資源存放在src/assets,建議使用絕對(duì)路徑/開頭確保正確引用
    2025-08-08
  • 基于Electron+Vite快速構(gòu)建Vue3桌面應(yīng)用

    基于Electron+Vite快速構(gòu)建Vue3桌面應(yīng)用

    這篇文章主要介紹了如何基于Electron和Vite快速構(gòu)建Vue3桌面應(yīng)用,本文主要技術(shù)棧就是Vue3、vite、Electron,文中有詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-07-07
  • Vue3+Vite打包配置全過(guò)程(包括分包配置)

    Vue3+Vite打包配置全過(guò)程(包括分包配置)

    文章主要介紹了在vite.config.ts文件中配置環(huán)境變量、代碼壓縮及分包策略的方法,通過(guò)配置output.manualChunks,項(xiàng)目打包后會(huì)將第三方包和業(yè)務(wù)代碼分開,更新業(yè)務(wù)代碼時(shí)只需更新index.js,從而利用緩存提升加載速度
    2025-12-12
  • vue實(shí)現(xiàn)添加與刪除圖書功能

    vue實(shí)現(xiàn)添加與刪除圖書功能

    這篇文章主要介紹了vue實(shí)現(xiàn)添加與刪除圖書功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-10-10
  • 使用Capacitor將Vue項(xiàng)目轉(zhuǎn)換為Android App的操作步驟

    使用Capacitor將Vue項(xiàng)目轉(zhuǎn)換為Android App的操作步驟

    這篇文章主要介紹了如何將Vue項(xiàng)目轉(zhuǎn)換為Android應(yīng)用,包括設(shè)置開發(fā)環(huán)境、打包Vue項(xiàng)目、安裝和配置Capacitor,以及如何處理網(wǎng)絡(luò)請(qǐng)求和配置圖標(biāo),此外,還包括了如何編譯生成APK文件和處理可能的錯(cuò)誤,需要的朋友可以參考下
    2025-10-10
  • Vue動(dòng)態(tài)控制input的disabled屬性的方法

    Vue動(dòng)態(tài)控制input的disabled屬性的方法

    這篇文章主要介紹了Vue動(dòng)態(tài)控制input的disabled屬性的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-06-06
  • Vue3+Spring Framework框架開發(fā)實(shí)戰(zhàn)

    Vue3+Spring Framework框架開發(fā)實(shí)戰(zhàn)

    這篇文章主要為大家介紹了Vue3+Spring Framework框架開發(fā)實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04

最新評(píng)論

九龙县| 壤塘县| 塘沽区| 揭东县| 邢台县| 北海市| 疏勒县| 济源市| 金秀| 石楼县| 南丰县| 加查县| 景泰县| 滕州市| 天峨县| 万宁市| 文山县| 乌拉特前旗| 苏尼特右旗| 弋阳县| 呈贡县| 罗江县| 威信县| 靖边县| 福贡县| 武陟县| 磐石市| 鄯善县| 修文县| 灵宝市| 海伦市| 馆陶县| 隆德县| 宁阳县| 邯郸市| 息烽县| 依安县| 喀什市| 石阡县| 肃宁县| 合江县|