vue+element-UI实现跟随滚动条加载表格数据

这篇具有很好参考价值的文章主要介绍了vue+element-UI实现跟随滚动条加载表格数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

el-table当数据量大的时候,实现滚动到底部后加载数据,直接上js代码,有其他需求请各自更改

 第一步、在data中定义两个数组

data() {
   return {
       innerList:[],  //新数组,用于存放全部数据
       innerData:[],  //el-table表格数组
       dom:null,
    }
}

第二步、在数据发生改变的方法中先循环存放一部分数据用于页面显示

watch: {
    data:{
         this.innerData=[];
         this.innerList=[];
         //将接口中获取到的数据全部存放到数组
         this.innerList = this.data.records || this.data.data || [];
         //先循环出100条数据用于显示
         for(let i=0;i<this.innerList.length;i++){
             if(i<100){
               this.innerData.push(this.innerList[i]);
             }
         }
    }
}

第三步、在mounted监听滚动事件文章来源地址https://www.toymoban.com/news/detail-602000.html

mounted() {
    // 设置滚动条监听时间加载数据
            this.dom = this.$refs.elTable.bodyWrapper;
            this.dom.addEventListener('scroll', () => {
                let scrollTop = this.dom.scrollTop;   //滚动距离
                let scrollHeight = this.dom.scrollHeight;   //滚动条的总高度
                let clientHeight = this.dom.clientHeight;   //可视区的高度
                    if (scrollTop + clientHeight === scrollHeight) {
                    if (this.innerList.length <= this.innerData.length) return 
                    if (this.innerData.length + 50 > this.innerList.length) {
                        // 如果不够50条就全部渲染上去
                        this.dom.scrollTop = this.dom.scrollTop - 50; 
                        this.innerData=[];
                        this.innerData.push(...this.innerList)
                    } else {
                        this.dom.scrollTop = this.dom.scrollTop - 50;
                        let id = this.innerData.length;
                        //每次渲染50条数据
                        for (let index = id; index < id + 50; index++) {
                            this.innerData.push(this.innerList[index])
                        }
                    }
                }
            })
}

到了这里,关于vue+element-UI实现跟随滚动条加载表格数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Vue+Element-ui实现表格嵌套表格(表头不同)

    data中integrateList根据后端返回的json数据确定,其格式为:

    2024年02月14日
    浏览(57)
  • 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)
  • element-ui table 设置表格滚动条位置

    场景: 在切换不同页面时(被 keep-alive 缓存的组件间切换),页面中的element-ui table的滚动条位置没有停留在原来的位置。目前需要切换不同的页面返回来后,滚动条保持在原来的位置。 代码:

    2024年02月11日
    浏览(42)
  • element-ui table表格 增加合计行 和 表格列固定之后 滚动条无法滚动

    是因为el-table__fixed或el-table__fixed-right有了合计之后把 el-table__body-wrapper层覆盖 el-table__fixed或el-table__fixed-right层级较高 因此点击滚动条失效 解决方法: 若想设置滚动条样式 若想合并合计行的列

    2024年02月15日
    浏览(35)
  • (vue)element-ui 表格实现勾选单选

    效果: 重选后: 解决参考:https://blog.csdn.net/m0_58373910/article/details/125912828

    2024年02月12日
    浏览(37)
  • vue搭配element-ui前端实现表格分页

    如果不从后台请求数据,那么就需要在前端手动管理数据。可以使用以下步骤实现该功能: 在 Vue 组件的 data 中定义一个数组来存放所有数据(不分页)。 在 mounted 钩子函数中,手动获取数据并存放到上一步定义的数组中。 在模板中使用 element-ui 的表格组件来展示数据,同

    2024年02月11日
    浏览(33)
  • vue2&Element-ui实现表格单元格合并

    由于项目需要实现单元格合并目前只是单页没有做分页处理先上效果图 看下数据结构 Element table提供的api arraySpanMethod columnIndex=0表示从第一列开始 rowIndex表示需要操作的行数 同济医院加上合计有12行从0开始=11 判断条件是rowIndex余12===0 我们打印一下 或者改成 表示从0开始到1

    2024年02月12日
    浏览(32)
  • element-ui select下拉框滚动加载更多

    当下拉框数据过多时,加载会非常慢,所以使用分页去显示,通过监听滚动事件来达到分页效果。 我是使用Vue自定义指令来做的。 一、首先在src下创建一个js文件,完成自定义指令的编写 有没有大神告诉我,自定义指令为啥在同一个页面不能使用多次? 二、在main.js中引入进来

    2024年02月16日
    浏览(36)
  • Vue2.0+element-ui实现表格的增删查改

    vue2做了个表格的demo,有增删改查的功能,记录一下,喜欢就点个赞收藏一下吧~ 效果: 1.主文件list-page.vue 列表页 2.弹窗页面(新增/编辑公用一个弹窗页面)

    2024年02月10日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包