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

vue3+el-select實現(xiàn)觸底加載更多功能(ts版)

 更新時間:2023年07月11日 11:05:56   作者:我總是詞不達意  
這篇文章主要給大家介紹了基于vue3和el-select實現(xiàn)觸底加載更多功能,文中有詳細的代碼示例,感興趣的同學(xué)可以借鑒參考下

思路

使用全局指令來實現(xiàn)觸底加載功能

通過el-select中的popper-class給下拉框加入一個類名

在src下的utils文件夾中創(chuàng)建selectLoadMoreDirective.ts文件

import { Directive, DirectiveBinding } from 'vue'
const loadMore: Directive = {
  beforeMount(el: any, binding: DirectiveBinding) {
    console.log(el)
    const selectDom = (document.querySelector(".more_select_dropdown") as any).querySelector(".el-select-dropdown .el-select-dropdown__wrap");
    console.log(selectDom, 'selectDom++++++++++++++');
    function loadMores(this: any) {
      const isBase = this.scrollHeight - this.scrollTop <= this.clientHeight
      if (isBase) {
        binding.value && binding.value()
      }
    }
    el.selectDomInfo = selectDom
    el.userLoadMore = loadMores
    nextTick(() => {
      selectDom?.addEventListener('scroll', loadMores)
    })
  },
  beforeUnmount(el: any) {
    if (el.userLoadMore) {
      el.selectDomInfo.removeEventListener('scroll', el.userLoadMore)
      delete el.selectDomInfo
      delete el.userLoadMore
    }
  }
}
export default loadMore

main.ts

import { createApp } from 'vue'
import App from './App.vue'
import router from '/@/router'
import loadMore from '@/utils/selectLoadMoreDirective'
const app = createApp(App)
app.use(router)
app.directive('loadMore', loadMore)

home.vue

<template>
  <div class="p-2">
    <el-select v-model="selectedValue" v-loadMore="loadMore" class="more-select" popper-class="more_select_dropdown"
      @change="selectChange">
      <el-option v-for="(item, index) in list" :key="`${item.value}${index}`" :label="item.label" :value="item.value" />
    </el-select>
  </div>
</template>
<script setup name="Home" lang="ts">
import { ComponentInternalInstance, computed, getCurrentInstance, nextTick, onMounted, reactive, ref, toRefs } from 'vue';
const selectedValue = ref([])
const selectData = reactive({
  pageIndex: 1,
  pageSize: 5,
  finished: false
})
const list = ref([
  {
    value: 1,
    label: '測試1'
  },
  {
    value: 2,
    label: '測試2'
  },
  {
    value: 3,
    label: '測試3'
  },
  {
    value: 4,
    label: '測試4'
  },
  {
    value: 5,
    label: '測試5'
  },
  {
    value: 6,
    label: '測試6'
  },
  {
    value: 7,
    label: '測試7'
  },
  {
    value: 8,
    label: '測試8'
  },
])
//觸底函數(shù)
const loadMore = () => {
  console.log(' 觸底了');
  // 防抖處理
  setTimeout(() => {
    if (selectData.finished) return //值為true,則代表沒有數(shù)據(jù)了
    selectData.pageIndex += 1
    // list.value = list.value.concat(list2.value)
    for (let i = 1; i <= 8; i++) {
      list.value.push({
        value: i,
        label: `測試${i}`
      })
    }
  }, 500)
}
//選中值發(fā)生變化時觸發(fā)
const selectChange = () => {
  console.log('選中的xxxx')
}
</script>

到此這篇關(guān)于vue3+el-select實現(xiàn)觸底加載更多功能的文章就介紹到這了,更多相關(guān)vue3+el-select 加載更多功能內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決iview table組件里的 固定列 表格不自適應(yīng)的問題

    解決iview table組件里的 固定列 表格不自適應(yīng)的問題

    這篇文章主要介紹了解決iview table組件里的 固定列 表格不自適應(yīng)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 基于vue實現(xiàn)pdf預(yù)覽功能

    基于vue實現(xiàn)pdf預(yù)覽功能

    隨著互聯(lián)網(wǎng)的發(fā)展,PDF?文件在信息交流和文檔分享中起著重要的作用,通過在?Vue?組件中實現(xiàn)?PDF?預(yù)覽功能,我們可以為用戶提供便捷的內(nèi)容閱讀體驗,下面我們就來看看具體實現(xiàn)方法吧
    2023-08-08
  • Vue雙向綁定實現(xiàn)原理與方法詳解

    Vue雙向綁定實現(xiàn)原理與方法詳解

    這篇文章主要介紹了Vue雙向綁定實現(xiàn)原理與方法,結(jié)合實例形式詳細分析了發(fā)布者-訂閱者模式、臟值檢查、數(shù)據(jù)劫持與雙向綁定相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2020-05-05
  • Vue之Vue.set動態(tài)新增對象屬性方法

    Vue之Vue.set動態(tài)新增對象屬性方法

    下面小編就為大家分享一篇Vue之Vue.set動態(tài)新增對象屬性方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Vue項目引用百度地圖并實現(xiàn)搜索定位等功能(案例分析)

    Vue項目引用百度地圖并實現(xiàn)搜索定位等功能(案例分析)

    這篇文章主要介紹了Vue項目引用百度地圖并實現(xiàn)搜索定位等功能(案例分析),本篇文章為案例分析,技術(shù)點較多,所以篇幅較長,認真閱覽的你一定會學(xué)到很多知識,需要的朋友可以參考下
    2022-09-09
  • vue使用動畫實現(xiàn)滾動表格效果

    vue使用動畫實現(xiàn)滾動表格效果

    這篇文章主要為大家詳細介紹了vue使用動畫實現(xiàn)滾動表格效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue監(jiān)聽滾動事件實現(xiàn)滾動監(jiān)聽

    vue監(jiān)聽滾動事件實現(xiàn)滾動監(jiān)聽

    本文主要介紹了vue監(jiān)聽滾動事件實現(xiàn)滾動監(jiān)聽的相關(guān)資料。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • vue+webpack實現(xiàn)異步加載三種用法示例詳解

    vue+webpack實現(xiàn)異步加載三種用法示例詳解

    這篇文章主要介紹了vue+webpack實現(xiàn)異步加載的三種用法,文中給大家提到了vue+webpack實現(xiàn)異步組件加載的代碼,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2018-04-04
  • 淺談vue單頁面中有多個echarts圖表時的公用代碼寫法

    淺談vue單頁面中有多個echarts圖表時的公用代碼寫法

    這篇文章主要介紹了淺談vue單頁面中有多個echarts圖表時的公用代碼寫法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vue增刪改查的簡單操作

    vue增刪改查的簡單操作

    這篇文章主要為大家詳細介紹了vue增刪改查的簡單操作,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評論