vue elementui的select组件实现滑到底部分页请求后端接口

这篇具有很好参考价值的文章主要介绍了vue elementui的select组件实现滑到底部分页请求后端接口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.实现效果

老规矩,直接上最后的实现效果
vue elementui的select组件实现滑到底部分页请求后端接口,vue.js,elementui,前端

2.实现原理

直接上代码

   <el-form-item class="diagmosisItem" label="诊断" v-scroll="handleScroll">
            <el-select
            size="small"
              remote
              filterable
              clearable
              :loading="getAllDiagnosisLoading"
              v-model="queryObj.diagnosisDesc"
              :remote-method="handleRemoteDisease"
              @clear="handleClearDisease"
              >
              <el-option
                v-for="item in allDiagnosisList"
                :key="item.valueId"
                :label="item.valueNo +' '+ item.valueDesc"
                :value="item.valueDesc">
              </el-option>

            </el-select>
          </el-form-item>
//js
//mothods
    handleScroll() {
      if(!this.scrollStop) {
        this.diagnosisQuery.pageNo++
        this.getAllDiagnosis(this.diagnosisQueryText, 'join')
      }
    },
    // 远程搜索诊断
    async handleRemoteDisease(keyword = '') {
      this.diagnosisQueryText = keyword
      this.getAllDiagnosis(keyword)
    },
    // 清除选中诊断
    handleClearDisease() {
      this.getAllDiagnosis('', 'clear')
    },
     //诊断列表
    async getAllDiagnosis(val = '', type = 'search') {
      try {
        this.getAllDiagnosisLoading = true
        this.scrollStop = false
        let res = null
        if(this.isHaveDiagnoseFlag) {
          if(type =='search') {
            this.diagnosisQuery ={
              pageNo:0,
              pageSize:100
            }
            res = await this.reqGetAllDiagnosis({
              keyword:val,
              pageNo:0,
              pageSize:100
            })
          }
          else if(type == 'join') {
            res = await this.reqGetAllDiagnosis({
              keyword:val,
              ...this.diagnosisQuery
            })
          }
          else{
            this.allDiagnosisList = this.allDiagnosisList
            this.getAllDiagnosisLoading = false
          }

        }
        if (res && res.success) {
          if(type =='search') {
            this.allDiagnosisList = res.data
          }
          else{
            if(res.data.length == 0) {
              this.scrollStop = true
            }
            this.allDiagnosisList = [...res.data, ...this.allDiagnosisList]
          }
          this.getAllDiagnosisLoading = false
        }
      } catch (error) {
        this.getAllDiagnosisLoading = false
      }
    },
//主要看这里
  directives:{
    scroll:{
      bind(el, binding) {
        const SELECTNRAP_DON = el.querySelector('.el-select-dropdown .el-select-dropdown__wrap')
        SELECTNRAP_DON.addEventListener( 'scroll', function() {
          console.log(this.scrollHeight - this.scrollTop, this.clientHeight)
          const CONDITION = this.scrollHeight - this.scrollTop <= this.clientHeight
          if(CONDITION) {
            binding.value()
          }
        })
      }
    }
  },

scrollStop主要是用来诊断select移到底部不再请求数据,默认为false。思路反正就是到底了触发函数处理,pageNo++请求后端接口文章来源地址https://www.toymoban.com/news/detail-726688.html

到了这里,关于vue elementui的select组件实现滑到底部分页请求后端接口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 写给后端开发的『vue3』请求后端接口

    本文分享一下在vue3前端项目中请求后端接口获取数据。比较简单,内容如下: 1、使用axios请求后端接口 首先npm install axios,添加axios依赖,就靠它来请求后端接口了,基本等同于使用jquery发ajax。 axios是一个独立的库,方便调用,这里使用vue-axios,通过this.axios发起后端请求。

    2024年02月16日
    浏览(47)
  • vue2 Elementui 树形组件怎么实现多选并获取选中节点的node对象

    一.前言 树形组件是我们经常用到的组件,主要场景就是:公司后台管理的部门管理,做文章目录等。 二.常用的几种方法及说明 1.node-click:节点被点击时的回调 共三个参数,依次为:传递给  data  属性的数组中该节点所对应的对象、 节点对应的 Node 、节点组件本身。 2.c

    2024年02月16日
    浏览(46)
  • vue+axios+el-progress(elementUI组件)实现下载进度条实时监听(小白简洁版)

    方案:使用axios方法onDownloadProgress方法监听下载进度 使用此方式的 前提 !!!请让后端在响应头中加上 content-length ,存放下载文件的 总大小 ,如下图: 1、进度条页面代码如下: 2、点击下载按钮的js方法逻辑部分 在 Axios 中, onDownloadProgress 是一个回调函数,它作为参数传

    2024年02月05日
    浏览(42)
  • Vue+ElementUI el-select选择器:绑定的值为对象

    业务需求: el-select选择器,后台接口需要的参数为name,name会存在重复情况,前端唯一标识选择用id,所以最后决定使用select绑定对象值将数据保存下来。 实现思路: 常规的select选择器,v-model 形式绑定的参数只能是boolean,string,number,但是仔细翻阅官方文档发现,selelct是可以

    2024年02月14日
    浏览(44)
  • elementUi重置Select选择器样式、option、deep、vue3、plus

    样式标签属性为 style scoped lang=\\\"scss\\\"/style

    2024年02月14日
    浏览(43)
  • 基于elementUI封装的带复选框el-checkbox的下拉多选el-select组件

    组件:MultipleSelect.vue 使用:index.vue 多选框多选不换行

    2024年01月22日
    浏览(51)
  • 如何vue使用ant design Vue中的select组件实现下拉分页加载数据,并解决存在的一个问题。

        需求:拉下菜单中数据过多,200条以上,就会导致select组件卡死。所以需要使用滑动到底部使其分页加载     可以借助 onPopupScroll 事件来监听下拉菜单的滚动事件,并判断当前是否已经到达了下拉菜单底部。具体可以通过以下步骤实现:     1、在组件中绑定 @popupScro

    2023年04月20日
    浏览(54)
  • 实现ElementUI中两个Select选择联动效果

    先上图 通过赋值的方式实现 即子级下拉选项循环数组为空 将所需的值对空数组 重新赋值 代码如下 第一个循环数组为 procedureType 第二个是 causeGroup 暂且称之为父级与子级 须注意的是父级下拉绑定的change事件 要对子级作出滞空操作 也就是 清空子选项的值 不然会出现切换选

    2024年02月15日
    浏览(46)
  • vue+elementUI el-select 中 没有加clearable出现一个或者多个×清除图标问题

    1、现象:下方截图多×清除图标了 2、在全局common.scss文件中加一个下方的全局样式noClear 3、在多×清除图标的组件上层div加noClear样式 4、 ×清除图标去除成功

    2024年01月19日
    浏览(50)
  • Vue中ElementUI结合transform使用时,修复el-select弹框定位不准确问题

            在大屏开发中,比如将1920*1080放到更大像素(3500*2400)大屏上演示,此时需要使用到transform来对页面进行缩放,但是此时发现弹框定位出错问题,无法准备定位到实际位置。之前写过一篇讲解的是ElementUI中的el-date-picker /组件修复定位问题,经过网友不断发现和提

    2024年01月19日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包