ant design vue table实现滚动加载

本文介绍了一个Vue自定义指令`loadMore`,用于实现表格数据的上拉和下拉加载。该指令监听滚动事件,当满足特定条件(如接近底部)时触发加载更多数据的回调函数。在实际应用中,只需在组件上使用`v-loadmore`并传递处理函数,即可结合AJAX请求无缝加载数据。
摘要由CSDN通过智能技术生成
  1. 在项目directive 下创建 loadMore.js
  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);
    					}
    				}
    			}
    		});
    	}
    };

  3. 注册

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

  4. 调用

    <a-table
        :class="position ==='down' ? 'load-down' : 'load-up'"
        :rowKey="(record,index)=>{return index}"
        :columns="tableData.columns"
        :data-source="tableData.data"
        :pagination="false"
        :scroll="{ y: tabHeight }"
        :key="tabHeight"
        :loading="tableData.loading"
        :isLoad="tableData.isLoad"
        v-loadmore="loadMore"
        @scrollCapture="scrollCapture"
    >

  5. 然后在 loadMore 方法中写入ajax 请求即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值