欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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í)例銷(xiāo)毀時(shí)進(jìn)行事件移除處理
    el._selectDom = selectDom;
    el._selectLoadMore = loadMores;
    // 監(jiān)聽(tīng)滾動(dòng)事件
    selectDom?.addEventListener('scroll', loadMores.bind(selectDom));
  },
  // 實(shí)例銷(xiāo)毀
  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ùn)行run命令

    vue如何自定義配置運(yùn)行run命令

    這篇文章主要介紹了vue如何自定義配置運(yùn)行run命令,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 詳解VUE單頁(yè)應(yīng)用骨架屏方案

    詳解VUE單頁(yè)應(yīng)用骨架屏方案

    這篇文章主要介紹了詳解VUE單頁(yè)應(yīng)用骨架屏方案,詳細(xì)的介紹了什么是骨架屏以及是憲法方案,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • Vue使用fabric.js實(shí)現(xiàn)局部截圖與大圖預(yù)覽功能

    Vue使用fabric.js實(shí)現(xiàn)局部截圖與大圖預(yù)覽功能

    這篇文章主要為大家詳細(xì)介紹了Vue如何使用fabric.js實(shí)現(xiàn)局部截圖與el-image-viewer大圖預(yù)覽功能,文中的示例代碼講解詳細(xì),感興趣的可以了解下
    2024-02-02
  • 簡(jiǎn)單了解vue中父子組件如何相互傳遞值(基礎(chǔ)向)

    簡(jiǎn)單了解vue中父子組件如何相互傳遞值(基礎(chǔ)向)

    這篇文章主要介紹了簡(jiǎn)單了解vue中父子組件如何相互傳遞值(基礎(chǔ)向),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 詳解key在Vue3和Vue2的不同之處

    詳解key在Vue3和Vue2的不同之處

    key屬性是一個(gè)特殊的屬性,用于標(biāo)識(shí)每個(gè)節(jié)點(diǎn)的唯一性。在Vue2.x版本中的key和Vue3.x版本中的key有很大的不同,那么在這篇文章中,我們將會(huì)討論Vue2中的key和Vue3中的key的區(qū)別
    2023-04-04
  • 詳解VUE前端按鈕權(quán)限控制

    詳解VUE前端按鈕權(quán)限控制

    這篇文章主要介紹了VUE前端按鈕權(quán)限控制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • vue自定義組件實(shí)現(xiàn)v-model雙向綁定數(shù)據(jù)的實(shí)例代碼

    vue自定義組件實(shí)現(xiàn)v-model雙向綁定數(shù)據(jù)的實(shí)例代碼

    vue中父子組件通信,都是單項(xiàng)的,直接在子組件中修改prop傳的值vue也會(huì)給出一個(gè)警告,接下來(lái)就用一個(gè)小列子一步一步實(shí)現(xiàn)了vue自定義的組件實(shí)現(xiàn)v-model雙向綁定,需要的朋友可以參考下
    2021-10-10
  • vue實(shí)現(xiàn)底部彈窗多選

    vue實(shí)現(xiàn)底部彈窗多選

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)底部彈窗多選,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • elementui中的el-cascader級(jí)聯(lián)選擇器的實(shí)踐

    elementui中的el-cascader級(jí)聯(lián)選擇器的實(shí)踐

    本文主要介紹了elementui中的el-cascader級(jí)聯(lián)選擇器的實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • vue實(shí)現(xiàn)導(dǎo)航欄效果(選中狀態(tài)刷新不消失)

    vue實(shí)現(xiàn)導(dǎo)航欄效果(選中狀態(tài)刷新不消失)

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)導(dǎo)航欄效果,選中狀態(tài)刷新不消失,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12

最新評(píng)論