element-ui select下拉框滚动加载更多

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

当下拉框数据过多时,加载会非常慢,所以使用分页去显示,通过监听滚动事件来达到分页效果。

element-ui select下拉框滚动加载更多,vue.js,javascript,Powered by 金山文档

我是使用Vue自定义指令来做的。

一、首先在src下创建一个js文件,完成自定义指令的编写


import Vue from 'vue'

export default () => {
  Vue.directive('selectScroll', {
    bind (el, binding) {
//  如上图,我通过v-if来控制了两个select框,当没有binding.arg这个参数时,我只能监听到企业类型下的select框,所以,我通过传参控制了监听的哪个select框
      var className='.'+binding.arg
      el.className=binding.arg
      // 获取滚动页面DOM
      const SCROLL_DOM = el.querySelector(`${className} .el-select-dropdown .el-select-dropdown__wrap`)
      // const SCROLL_DOM = el.querySelector(“.el-select-dropdown .el-select-dropdown__wrap“)
      SCROLL_DOM.addEventListener('scroll', function () {
        // 当前的滚动位置 减去  上一次的滚动位置
        // 如果为true则代表向上滚动,false代表向下滚动
        const CONDITION = this.scrollHeight - this.scrollTop <= this.clientHeight
        // 如果已达到指定位置则触发
        if (CONDITION) {
            // 将滚动行为告诉组件
            binding.value()
          }
        
      })
    }
  })
}

有没有大神告诉我,自定义指令为啥在同一个页面不能使用多次?

二、在main.js中引入进来


import Directives from './utils/select-scroll'
Vue.use(Directives)

三、使用


<el-select
  v-model="Id"
  v-selectScroll:selectName="handleScroll"   //这行最重要(传参)
  // v-selectScroll="handleScroll"   //这行最重要(不传参)
  filterable
  clearable
  placeholder="请选择"
>
  <el-option
    v-for="(item,index) in options"
    :key='index'
    :label="item.name"
    :value="item.id"
  ></el-option>
</el-select>

因为我还加了搜索功能,问题还算挺多的

参考官方文档:

自定义指令 | Vue.js文章来源地址https://www.toymoban.com/news/detail-602918.html

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

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

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

相关文章

  • VUE element-ui 使用Screefull 页面全屏时el-select下拉菜单不显示(下拉框不显示无法选择)问题解决

    问题原因:elemrnt-ui会默认将弹出框插入至 body 元素;当设置了某个元素全屏时,会遮挡住原来的select下拉数据。

    2024年02月14日
    浏览(41)
  • vue中数据滚动显示 实现Element-UI中el-table内数据的懒加载

    工作中我们经常会用到element-ui组件库中的le-table组件来展示数据,但当table的数据源数量过大的时候统一展示可能会出现页面卡顿,且会影响用户体验,为此我们可以尝试对el-table中的数据做懒加载的效果展示: 1. 挂在阶段监听el-table的scroll滚动事件 2. 当table表格滚动条的位置

    2023年04月08日
    浏览(45)
  • 页面滚动时隐藏element-ui下拉框/时间弹框

    场景 在类后台管理的系统中,当(有垂直滚动时)点击下拉框后滚动页面,会发现下拉项会遮盖住 layout 正常页面: 滚动后: 解决 在页面滚动或者缩放时隐藏下拉项即可(借助点击目标元素,下拉项会自动隐藏的特点) 使用

    2024年02月12日
    浏览(43)
  • 使用element-ui el-select 做下拉 全选+搜索 功能

    使用element-ui el-select 做下拉 全选+搜索 功能 有时候,需要用到下拉列表 全选和搜索,并且鼠标放入的时候有下拉列表展示。以前的做法是 check + el-input搜索结合做个组件,现在这个方法直接使用el-select 就能做到这个需求功能:有搜索+有全选+有取消+有确认请求+有鼠标移入自

    2024年02月11日
    浏览(42)
  • el-select值的回显问题:如何使element-ui的下拉框显示label值

    今天写前端又遇到个很神奇的事情,element的下拉框el-select出现了一点儿问题,回显的时候显示value的值,这个强迫症看来就很难受  我写的代码是这样的 查阅大量资料,突然发现一个简单的方法,那就是vue的v-bind的神奇之处,v-bind的简写是:冒号 所以解决方法就来了(敲重

    2024年02月07日
    浏览(35)
  • element-ui——timeline时间线组件+自动滚动+v-infinite-scroll无限滚动+动态加载——技能提升

    最近看到同事在弄日志记录,需要实现的效果是: 最终效果图如下: 解析: 为了实现无限滚动,需要做两块一模一样的内容来回交替显示,也就是上面代码中的id=\\\"timeline1\\\"和id=\\\"timeline2\\\"了

    2024年02月11日
    浏览(28)
  • Element-UI实现的下拉搜索树组件(el-select、el-input、el-tree组合使用)

    1、子组件封装 注意使用:正常使用 // 子组件使用 父组件调用

    2024年02月11日
    浏览(63)
  • element-ui的table实现滚动加载,涵el-table组件封装一份

    重点就是 a d d R o l l L i s t e n e r addRollListener a d d R o l l L i s t e n e r 函数,想快点弄上去看效果的直接弄这个函数吧 如果不在mounted中则一定要this.$nextTick(() = this.addRollListener()) 示例代码 如果你把上面的看过了;只需要在 a d d R o l l L i s t e n e r addRollListener a d d R o l l L i s t e

    2023年04月08日
    浏览(39)
  • 【vue组件】使用element-ui 实现三级联动下拉选择

    实现的思路是第一个下拉选择在选择了选项后将该选项的信息传递到接口请求下一个选项的内容,依次类推 然后在清除了上一级选择的选项后要将其次级和子孙级的选项都清除(包括选择里的列表内容) 下面看具体代码: 效果图:

    2024年02月11日
    浏览(45)
  • select下拉框---无限滚动加载

    需求: select的下拉框,后端做了分页,此时前段需要同步加分页 解决思路: 考虑到交互和性能,采用触底请求下一页(无限滚动加载) 代码示例: 代码示例讲解

    2024年02月12日
    浏览(26)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包