elementUi select下拉框触底加载异步分页数据

在Element UI中,可以通过监听select下拉框的visible-change事件来实现触底加载下一页的效果。

方式一:利用elementUi的事件

具体步骤如下:

  1. 首先,在select组件中设置:@visible-change="handleVisibleChange" ref="mySelect"
  2. 在data中定义一个变量pageNum,用于记录当前加载的页码:pageNum: 1,
  3. 在methods中定义一个函数handleVisibleChange,用于监听下拉框的显示和隐藏变化:
javascript 复制代码
handleVisibleChange(visible) {
  if (visible) {
    // 如果下拉框显示
    const selectDropdown = document.querySelector('.el-select-dropdown__wrap');
    // 监听下拉框滚动事件
    selectDropdown.addEventListener('scroll', this.loadNextPage);
  } else {
    // 如果下拉框隐藏
    const selectDropdown = document.querySelector('.el-select-dropdown__wrap');
    // 移除下拉框滚动事件监听
    selectDropdown.removeEventListener('scroll', this.loadNextPage);
  }
},
  1. 在methods中定义一个函数loadNextPage,用于加载下一页的数据:
javascript 复制代码
loadNextPage() {
  const selectDropdown = document.querySelector('.el-select-dropdown__wrap');
  // 判断下拉框是否触底
  if (selectDropdown.scrollTop + selectDropdown.offsetHeight >= selectDropdown.scrollHeight) {
    // 触底加载下一页数据
    this.pageNum++;
    // 调用接口请求下一页数据
    // ...
  }
},

方式二:使用自定义指令

首先,这个问题​需要我们写一个自定义指令来监​听一下select下拉框的scroll事件,这个是第一步,

第一步:新建一个select.js文件。具体代码如下:

第二步:在main.js文件中引入即可。当然引入有两种引入方式,下面来介绍一下。

1、第一种引入方式 (这种方式是项目中还有其他的自定义指令,不行全部拿过来),这个引入方式就是上面我那种直接 export default 直接暴露出去的写法即可

javascript 复制代码
import directives from '@/assets/js/directives'
 
Object.keys(directives).forEach(item => {
  Vue.directive(item, directives[item])
})

2、第二种引入方式 。 是直接写个vue文件 ,引入vue, Vue.directive( )在里面书写代码,这种方式的引入如下:

javascript 复制代码
import Directives from './directives/index'
 
Vue.use(Directives)


通过以上步骤,我们就可以实现当下拉框触底时自动加载下一页数据的效果。你可以根据自己的需求,调用相应的接口请求下一页数据并展示到下拉框中。

相关推荐
2501_9444480031 分钟前
Flutter for OpenHarmony衣橱管家App实战:支持我们功能实现
android·javascript·flutter
人工智能训练6 小时前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm
会跑的葫芦怪7 小时前
若依Vue 项目多子路径配置
前端·javascript·vue.js
xiaoqi9227 小时前
React Native鸿蒙跨平台如何进行狗狗领养中心,实现基于唯一标识的事件透传方式是移动端列表开发的通用规范
javascript·react native·react.js·ecmascript·harmonyos
jin1233228 小时前
React Native鸿蒙跨平台剧本杀组队消息与快捷入口组件,包含消息列表展示、快捷入口管理、快捷操作触发和消息详情预览四大核心功能
javascript·react native·react.js·ecmascript·harmonyos
烬头88219 小时前
React Native鸿蒙跨平台实现二维码联系人APP(QRCodeContactApp)
javascript·react native·react.js·ecmascript·harmonyos
pas1369 小时前
40-mini-vue 实现三种联合类型
前端·javascript·vue.js
摇滚侠10 小时前
2 小时快速入门 ES6 基础视频教程
前端·ecmascript·es6
2601_9498333910 小时前
flutter_for_openharmony口腔护理app实战+预约管理实现
android·javascript·flutter
珑墨10 小时前
【Turbo】使用介绍
前端