vue——antd+elementUi——table表格实现滚动加载(分页滚动加载)——技能提升

news2024/10/7 20:33:44

今天遇到一个需求,就是要实现表格的滚动加载。

通常我们经常实现的效果是:下图中带分页的表格
在这里插入图片描述
如果要实现滚动分页加载的话,则需要保证的一点就是数据量不能过大,过多的数据量会导致页面的卡顿。

下面来介绍滚动分页加载的实现方式:

vue table实现滚动加载:http://t.csdn.cn/alzLo

1.添加自定义滚动加载指令文件

1.1 在utils文件夹中创建 loadMore.js

1.2 添加如下代码:

/**
 * 加载更多数据的指令
 */
export default {
	install(Vue) {
		Vue.mixin({
			directives: {
				loadmore: {
					bind(el, binding) {
						let bindTime;
						clearTimeout(bindTime)
						bindTime = window.setTimeout(function () {
							let selectWrap = el.querySelector(".ant-table-body");
							if (!selectWrap) selectWrap = el.querySelector(".el-table__body-wrapper");
							var lastScrollTop = 0;
							selectWrap.addEventListener("scroll", function () {
								let offsetValue = 20;
									if(this.scrollTop == 0) {
										binding.value('up', this);
										return false;
									}
									if (lastScrollTop != this.scrollTop) {
										lastScrollTop = this.scrollTop;
										const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight;
										if (scrollDistance <= offsetValue) {
											binding.value('down', this);
										}
									}
							}, false);
						}, 200);
					}
				}
			}
		});
	}
};

1.3 在main.js中添加以下代码

//加载更多数据的指令
import loadMore from './utils/loadMore';
Vue.use(loadMore);

1.4 页面中的使用方式

<a-table
        :loading="listLoading"
        :data-source="listDatas"
        :columns="columns"
        :scroll="{ x: 1000, y: 460 }"
        :pagination="false"//将分页的参数改为false,即不显示分页组件
        bordered
        v-loadmore="getList"//添加加载更多的指令
        @change="changeTable"
        style="width: 100%"
      >
 xxxx
</a-table>

getList方法如下:

 getList(a) {
      if (this.pagination.total == this.listDatas.length) {
        return;//当页面数据已经加载完全时,不再请求数据
      }
      if (a == 'up') {
        return;//表示是:页面向上滚动的时候不进行接口数据的请求
      }
      this.listLoading = true;
      let params = {
        ...this.pagination,
        ...this.listQuery,
      };
      getList(params)
        .then((response) => {
          if (response.code == 1) {
            this.listDatas = this.listDatas.concat(response.data.items);//做数据的拼接
            // this.listDatas = response.data.items || [];
            const pagination = { ...this.pagination };
            pagination.total = response.data?.totalCount;
            this.pagination = pagination;
            this.pagination.current++;//准备下次向下滚动的时候加载下一页的数据
          } else {
            this.$message.error(`${response.msg} ${',' + response.data}`);
          }
        })
        .catch((err) => {
          //  this.$message.error('数据获取失败');
        })
        .finally(() => {
          this.listLoading = false;
        });

另外其它的操作也需要做相应的处理,
比如点击查询按钮时,需要先将listDatas数据清空。

完成!!!多多积累,多多收获!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/593045.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jmeter的使用

一、jmeter介绍和下载 1.1 jmeter介绍 Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试&#xff0c;它最初被设计用于Web应用测试&#xff0c;但后来扩展到其他测试领域。 JMeter 可以用于对服务器、网络或对象模拟巨大的负载&#xff0c;来自不…

【Python】FastAPI 配置日志即 logging 模块使用

目录 1. 日志 2. FastAPI 示例 1. 日志 日志是对软件执行时所发生事件的一种追踪方式。软件开发人员对他们的代码添加日志调用&#xff0c;借此来指示某事件的发生。一个事件通过一些包含变量数据的描述信息来描述&#xff08;比如&#xff1a;每个事件发生时的数据都是不同的…

Python之并发编程多线程理论

一、什么是线程 在传统操作系统中&#xff0c;每个进程有一个地址空间&#xff0c;而且默认就有一个控制线程 线程顾名思义&#xff0c;就是一条流水线工作的过程&#xff0c;一条流水线必须属于一个车间&#xff0c;一个车间的工作过程是一个进程 车间负责把资源整合到一起…

项目开发中异常处理需要注意的问题(详细!!)

文章目录 1、各层在对异常处理时需要注意的问题2、业务代码层面对于异常的处理姿势3、错误的异常处理方式&#xff1a;1、丢弃异常2、丢失异常的原始信息3、抛出异常时不指定任何信息 4、线程池处理异常方法 1、各层在对异常处理时需要注意的问题 这是日常开发中请求的处理过程…

springcloud-alibaba (05)Seata实现分布式事务-个人笔记

前言 本文将介绍如何使用Seata实现分布式事务。将覆盖以下主题&#xff1a; seata下载与安装如何配置和启动Seata服务器如何编写应用程序以使用Seata如何解决常见问题 本文只是我个人seata学习笔记&#xff0c;不是什么学习教程 如果你是一名Java开发人员&#xff0c;那么你…

官方喊你来免费下载 Navicat Premium 16.2 Beta 中文版 | Redis 体验官火热招募中

今天&#xff0c;我们发布了 Navicat 16.2 Beta 中文版&#xff0c;它适用于 Windows、macOS 和 Linux 平台。届时&#xff0c;我们诚邀广大 Redis 用户及爱好者亲测 Beta 版&#xff0c;希望 Redis 新功能将为 Redis 相关工作者&#xff08;应用开发人员、DBA 和数据分析师等&…

【paddlecls】多机多卡-linux(二:环境搭建)

构建并进入 docker 容器后&#xff0c;我们进入下一步&#xff1a; 1. 退出/进入 docker 容器&#xff1a; 在进入 Docker 容器后&#xff0c;可使用组合键 Ctrl P Q 退出当前容器&#xff0c;同时不关闭该容器&#xff1b; 如需再次进入容器&#xff0c;可使用下述命令&am…

微信小程序项目实例——生活记账本

今日推荐&#x1f481;‍♂️ 2023五月天演唱会&#x1f3a4;&#x1f3a4;&#x1f3a4;大家一起冲冲冲&#x1f3c3;‍♂️&#x1f3c3;‍♂️&#x1f3c3;‍♂️ &#x1f52e;&#x1f52e;&#x1f52e;&#x1f52e;&#x1f52e;往期优质项目实例&#x1f52e;&…

蓝牙资讯|Counterpoint发布2023年Q1中国智能手表报告

根据市场调查机构 Counterpoint Research 公布的最新报告&#xff0c;2023 年第 1 季度中国智能手表出货量同比下降 28%&#xff0c;环比下降 16%&#xff0c;达到过去 12 个季度以来的最低水平。 本季度智能手表市场中&#xff0c;华为、苹果和小天才&#xff08;imoo&#…

想要入坑C++?当我拿出菱形虚拟继承,阁下又该如何应对

文章目录 &#x1f490;专栏导读&#x1f490;文章导读&#x1f337;继承的定义方式&#x1f337;继承方式与访问限定符&#x1f337;基类和派生类对象赋值转换&#x1f337;继承中的作用域&#x1f337;派生类的默认成员函数&#x1f337;继承与友元&#x1f337;继承与静态成…

基于 ESP32 通过 SMTP 服务器 来发送电子邮件信息

电子邮件在全球范围内被用作数字通信的重要组成部分。电子邮件主要用于官方通信目的,因为它最方便、成本效益高、保存记录、覆盖全球且环保。电子邮件是一种非常快捷的通信方式,只是您需要稳定的互联网连接。 在这个项目中,我们将使用ESP32开发板发送电子邮件(纯文本和 HTM…

因为计算机中丢失VCRUNTIME140怎么办?为什么会丢失VCRUNTIME140.dll

vcruntime140.dll是一个Windows动态链接库&#xff0c;其主要功能是为C/C编译的程序提供运行时支持。这个库在Microsoft Visual Studio 2015中被引入&#xff0c;其名称中的“140”代表版本号。在我们打开运行软件或者游戏程序的时候&#xff0c;电脑提示因为计算机中丢失VCRUN…

windows下编译roadrunner和作为laravel服务器实践

roadrunner源码地址&#xff1a;https://gitee.com/mirrors/RoadRunner?_fromgitee_search windows下编译roadrunner源码获得rr.exe可执行文件 将rr.exe拷贝到laravel目录下 .rr.yaml配置文件内容&#xff1a; version: 3 server: command: "php vendor/spiral/road…

基于Python+AIML+Tornado的智能聊天机器人(NLP+深度学习)含全部工程源码+语料库 适合个人二次开发

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境Tornado 环境 模块实现1. 前端2. 后端3. 语料库4. 系统测试 其它资料下载 前言 本项目旨在利用AIML技术构建一个聊天机器人&#xff0c;实现用户通过聊天界面与机器人交互的功能。通过提供的工程源代码&#xf…

【业务功能篇07】Mysql 模糊查询

业务场景&#xff1a;我们对不同的业务逻辑进行数据处理时&#xff0c;多数是离不开需要模糊匹配的时候&#xff0c;比如要获取该表某个字段中&#xff0c;含有某个具体的字符内容&#xff0c;过滤出业务想要的数据。 这里介绍有这么几种&#xff1a; 一、MySQL通配符模糊查询(…

3D模型Web轻量化工具,如何监测矿藏开采安全与效率?

随着科技的进步&#xff0c;各个领地都在不断探索和应用新的技术来提高效率和准确性。HOOPS技术作为一种先进的3D可视化和模拟技术&#xff0c;正在采掘和地质科学领域发挥着重要的作用。本文将探讨HOOPS技术在采掘和地质科学中的具体应用&#xff0c;并分析其对这些领域的影响…

Maven高级1-分模块开发与依赖问题

1. 分模块开发与设计 将原始模块按照功能拆分成若干个子模块&#xff0c;方便模块间的相互调用&#xff0c;接口共享&#xff1b; 言简意赅就是把功能模块放出去&#xff0c;然后通过在pom文件中导入坐标找到&#xff1b; 注意拆出来的功能模块需要通过Maven指令安装模块选择in…

Python Web后端面试常考数据结构与算法(珍藏版)

本文将对Python web后端面试时常考数据结构与算法进行总结&#xff0c;适合即将找工作或面试的你。Python web后端常考数据结构包括: 常见的数据结构链表、队列、栈、二叉树、堆 使用内置的结构实现高级数据结构&#xff0c;比如内置的list/deque实现栈 LeetCode或者剑指Offe…

【配电网重构】高比例清洁能源接入下计及需求响应的配电网重构【IEEE33节点】(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

循环冗余计算

题目&#xff1a;若信息码字为111000110&#xff0c;生成多项式 x 5 x^5 x5 x 3 x^3 x3 x x x1&#xff0c;则计算crc校验码为()。 将生成多项式的系数作为除数&#xff08;101011&#xff09;&#xff1b; 获得方法1x50x41x30x21x1生成多项式的最高幂次数&#xff08;5&#…