el-select 分页加载

这篇具有很好参考价值的文章主要介绍了el-select 分页加载。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

el-select 分页懒加载

针对数据量大的选择器,需要分页从后端接口获取数据,前端监听选择器下拉框的滚动事件,当往下滚动至底部一定位置时,调接口文章来源地址https://www.toymoban.com/news/detail-630771.html

监听的指令——loadMore

import Vue from 'vue'
Vue.directive('loadMore', {
  bind(el, binding) {
    let value = ''
    el.addEventListener('input', function() {
      value = el.querySelector('.el-select__input').value
    })
    // 获取滚动页面DOM
    const SCROLL_DOM = el.querySelector('.el-select-dropdown .el-select-dropdown__wrap')
    let scrollPosition = 0
    SCROLL_DOM.addEventListener('scroll', function() {
      // 当前的滚动位置 减去  上一次的滚动位置
      // 如果为true则代表向上滚动,false代表向下滚动
      const flag= this.scrollTop - scrollPosition > 0
      
      // 记录当前的滚动位置
      scrollPosition = this.scrollTop

      // 记录滚动位置距离底部的位置,在滚动位置距离滚动页面底部一定高度时在触发,例如距页面底部只有100px时触发loadMore事件
      const LIMIT_HEIGHT= 10
      const scrollBottom = this.scrollHeight - (this.scrollTop + this.clientHeight) < LIMIT_HEIGHT
      const { loadMore } = binding.value;
      // 如果已达到指定位置则触发
      // 如果向下滚动 并且距离底部只有10px
      if (flag && scrollBottom) {
        // 将滚动行为告诉组件
        loadMore(flag, value)
      }
      // 如果是向上滚动  并且距离顶部只有100px
      //if (!flag&& this.scrollTop < LIMIT_HEIGHT) {
      //  loadMore(flag, value)
      //}
    })
  }
})

指令的使用

<el-select
  v-model="value"
   v-load-more="{ loadMore }"
   :remote-method="val => searchList(val)"
   :loading="loading"
   remote
   filterable
   multiple
   placeholder="请选择"
   @visible-change="pageIndex = 1"
 >
   <el-option v-for="item in list" :key="item" :label="item.label" :value="item.value"></el-option>
 </el-select>

searchList(value,pageIndex = 1, pageSize = 10) {
	//更新下拉数据时,重置分页参数
	this.pageIndex = 1;
	//将分页参数传至接口
	setTimeout(()=>{
		this.list = [];
	})
}
loadMore(flag, value) {
	flag && this.searchList(value, ++this.pageIndex);
}
没有做成虚拟滚动的原因其实就是没有必要弄那么复杂,懒加载的方式对于用户来说更友好,同时减轻开发成本

到了这里,关于el-select 分页加载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • el-select 远程搜索 懒加载

    参考链接:el-select实现远程搜索和懒加载_select 懒加载_qd-hhkj的博客-CSDN博客 自定义懒加载 HTML 定义变量 方法

    2024年02月15日
    浏览(43)
  • el-select 无限下拉滚动加载数据

    template   div     el-form       ref=\\\"saveParameter\\\"       :model=\\\"saveParameter\\\"       inline       inline-message       style=\\\"margin:10px\\\"           el-form-item label=\\\"供应商\\\" prop=\\\"lngcustomerid\\\"         el-select           v-model=\\\"saveParameter.lngcustomerid\\\"           v-loadmore=\\\"loadMore()\\\"           styl

    2024年02月14日
    浏览(43)
  • el-select报错:vue.esm.js?5cd5:5105 [Vue warn]: <transition-group> children must be keyed: <ElTag>;无法选中

    目录 一、问题 二、原因及解决方法 三、总结 Tips:嫌麻烦可以直接看总结中有颜色的字体即可! 1. 使用element select控件时有警告(transition-group children must be keyed: ElTag)且无法选中下拉项 vue.esm.js?5cd5:5105 [Vue warn]: transition-group children must be keyed: ElTag found in --- TransitionGroup        

    2024年02月14日
    浏览(46)
  • vue el-select默认值

    情景:在调取接口后渲染数据时需要将选取的select设为默认值,具体案例为调取省份数据后,根据省份获取其对应的城市数据,并将其对应的el-select默认选中该数据的状态 问题:看到网上很多说直接改el-select绑定的v-model的值,这样做就会掉入select框中仅仅是显示相应的文字

    2024年02月13日
    浏览(55)
  • 记录el-select+el-tree复选框,支持模糊查询,懒加载,树父子节点不关联,不全选

    需求:一个机构下拉菜单,一个人员下拉菜单,默认带入当前登录用户的机构和人员。机构下拉菜单为两个接口,模糊查询为一个接口不包含懒加载,默认非模糊查询情况下为一个接口,点击节点懒加载。机构下拉菜单数据变动更新人员下拉菜单数据。日期默认为当天

    2024年01月15日
    浏览(44)
  • element-plus的el-select实现触底加载更多(新版本报错踩坑)

    element-plus新版增加了一个属性,且默认为true,使得下拉菜单被插入到了body元素下。即.el-select下默认不包含.el-select-dropdown了。 当依旧按照之前的方式,封装自定义指令,实现滚动到el-select下拉菜单的底部,加载更多数据的功能时就会报错。 原逻辑:  报错 原因也就是前言中

    2024年02月08日
    浏览(58)
  • vue+el-select下拉实现:全选、反选、清空功能

    问题描述: el-select下拉框要求实现全选功能。具体功能包括: 当选择【全选】时,所有选项全部被勾选; 当选择【反选】时,已选择选项变为未选择选项,未选项变为已选项 当选择【清空】时,所有选项变为未选 如下图: 1、给el-select增加【全选】【清空】【反选】按钮

    2024年02月10日
    浏览(75)
  • Element VUE修改 el-input和el-select长度

     没有设置样式之前,采用默认样式,界面如下:  模拟代码如下  为了美观需要修改下样式,使文本框与下拉框的长度一致 第一种:添加style属性,采用行内样式修改长度  第二种:添加class属性,采用内部样式  stule标签中设置长度 第三种:找到element-ui.scss,采用外部样式

    2024年02月11日
    浏览(55)
  • (vue)el-select选择框加全选/清空/反选

    js 解决参考 1.全选/清空/反选 2.全选/反选

    2024年04月25日
    浏览(47)
  • vue+elememt-ui el-select组件封装

    最终效果图: 用的是vue2写法,喜欢用vue3的同学可以自行修改下。 需求要求 : 实现el-select功能复用; 支持单选或者多选功能; 支持全拼或者简拼搜索功能; 直接上代码: pinyin.js文件 希望对大家有帮助哟!

    2024年02月12日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包