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

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

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

思路

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

通過(guò)el-select中的popper-class給下拉框加入一個(gè)類(lèi)名

在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: '測(cè)試1'
  },
  {
    value: 2,
    label: '測(cè)試2'
  },
  {
    value: 3,
    label: '測(cè)試3'
  },
  {
    value: 4,
    label: '測(cè)試4'
  },
  {
    value: 5,
    label: '測(cè)試5'
  },
  {
    value: 6,
    label: '測(cè)試6'
  },
  {
    value: 7,
    label: '測(cè)試7'
  },
  {
    value: 8,
    label: '測(cè)試8'
  },
])
//觸底函數(shù)
const loadMore = () => {
  console.log(' 觸底了');
  // 防抖處理
  setTimeout(() => {
    if (selectData.finished) return //值為true,則代表沒(méi)有數(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: `測(cè)試${i}`
      })
    }
  }, 500)
}
//選中值發(fā)生變化時(shí)觸發(fā)
const selectChange = () => {
  console.log('選中的xxxx')
}
</script>

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

相關(guān)文章

  • webpack + vue 打包生成公共配置文件(域名) 方便動(dòng)態(tài)修改

    webpack + vue 打包生成公共配置文件(域名) 方便動(dòng)態(tài)修改

    這篇文章主要介紹了webpack + vue 打包生成公共配置文件(域名) 方便動(dòng)態(tài)修改,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 實(shí)例解析Vue.js下載方式及基本概念

    實(shí)例解析Vue.js下載方式及基本概念

    vue是一套用于構(gòu)建用戶(hù)界面的漸進(jìn)式框架。接下來(lái)通過(guò)本文給大家分享Vue.js下載方式及基本概念,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-05-05
  • vue2.0項(xiàng)目中使用Ueditor富文本編輯器示例代碼

    vue2.0項(xiàng)目中使用Ueditor富文本編輯器示例代碼

    本篇文章主要介紹了vue2.0項(xiàng)目中使用Ueditor富文本編輯器示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-08-08
  • 詳解Vite如何處理CSS預(yù)處理器

    詳解Vite如何處理CSS預(yù)處理器

    在現(xiàn)代前端開(kāi)發(fā)中,CSS 預(yù)處理器如 Sass、Less 和 Stylus 等工具,為樣式編寫(xiě)提供了更強(qiáng)大的功能和更好的開(kāi)發(fā)體驗(yàn),本文將探討 Vite 是如何處理 CSS 預(yù)處理器的,以及如何在實(shí)際項(xiàng)目中配置和使用它們,需要的朋友可以參考下
    2025-02-02
  • Vue組件樣式作用域問(wèn)題:原因與解決方式

    Vue組件樣式作用域問(wèn)題:原因與解決方式

    本文將深入探討 Vue 組件樣式作用域的常見(jiàn)問(wèn)題,并提供多種解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • vue全局過(guò)濾器概念及注意事項(xiàng)和基本使用方法

    vue全局過(guò)濾器概念及注意事項(xiàng)和基本使用方法

    這篇文章主要給大家分享了vue全局過(guò)濾器概念及注意事項(xiàng)和基本使用方法,下面文字圍繞vue全局過(guò)濾器的相關(guān)資料展開(kāi)具體的詳細(xì)內(nèi)容,需要的朋友可以參考一下,希望對(duì)你有所幫助
    2021-11-11
  • Vue3中defineProps設(shè)置默認(rèn)值的方法實(shí)現(xiàn)

    Vue3中defineProps設(shè)置默認(rèn)值的方法實(shí)現(xiàn)

    Vue3中我們經(jīng)常需要使用defineProps來(lái)定義組件的屬性,本文主要介紹了Vue3中defineProps設(shè)置默認(rèn)值的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • vue路由守衛(wèi),限制前端頁(yè)面訪(fǎng)問(wèn)權(quán)限的例子

    vue路由守衛(wèi),限制前端頁(yè)面訪(fǎng)問(wèn)權(quán)限的例子

    今天小編就為大家分享一篇vue路由守衛(wèi),限制前端頁(yè)面訪(fǎng)問(wèn)權(quán)限的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • vue3使用深度選擇器修改樣式問(wèn)題

    vue3使用深度選擇器修改樣式問(wèn)題

    這篇文章主要介紹了vue3使用深度選擇器修改樣式問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 基于vue實(shí)現(xiàn)探探滑動(dòng)組件功能

    基于vue實(shí)現(xiàn)探探滑動(dòng)組件功能

    這篇文章主要介紹了基于vue實(shí)現(xiàn)探探滑動(dòng)組件功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評(píng)論

新民市| 年辖:市辖区| 罗源县| 内乡县| 娄底市| 浠水县| 乐平市| 天柱县| 明水县| 凤阳县| 桂东县| 祁阳县| 滁州市| 枝江市| 遵义县| 江孜县| 林周县| 东兴市| 栾川县| 偏关县| 福泉市| 封丘县| 万全县| 武威市| 高州市| 盐源县| 栖霞市| 磴口县| 恩平市| 台湾省| 光泽县| 山西省| 宝鸡市| 津市市| 车致| 贵定县| 白山市| 札达县| 仪陇县| 古田县| 阳山县|