el-table滚动分页加载数据

该文章介绍了如何在Vue.js项目中使用el-table-infinite-scroll插件实现表格的无限滚动加载功能。首先,通过npm安装插件并全局引入。然后,在模板中配置el-table组件,利用指令el-table-infinite-scroll监听滚动事件。在方法中处理数据加载逻辑,包括首次加载和滚动时加载下一页数据。

1. 安装infinite-scroll 版本1:

npm install --save el-table-infinite-scroll@1

2.  全局引入:

在main.js中

import Vue from 'vue';
import elTableInfiniteScroll from 'el-table-infinite-scroll';
Vue.use(elTableInfiniteScroll);

3. 页面示例:

<template>
    <el-table v-loading="listLoading" :data="list" element-loading-text="Loading" height="100%" border v-el-table-infinite-scroll="scrollLoad">
        <el-table-column prop="显示字段1value" label="显示字段1" width="180"></el-table-column>
        <el-table-column prop="显示字段2value" label="显示字段2" width="180"></el-table-column>
        <el-table-column prop="显示字段3value" label="显示字段3"></el-table-column>
    </el-table>
</template>

<script>
import elTableInfiniteScroll from 'el-table-infinite-scroll'; // 全局引用无需此引用

export default {
    // 全局引用无需此声明
    directives: {
        'el-table-infinite-scroll': elTableInfiniteScroll
    },
    data() {
        return {
          listLoading: true, // 加载中
          list: [], // 表数据
          pageObj: {
            pageSize: 5, // 每页数据的量
            currentPage: 1, // 当前页索引
            totalSize: 0, //总数量
            currentSkipCount: 0, //当前显示
          },
          filter: { // 对应查询数据方法中所需参数
            Keyword: null,
            Sidx: "type",
            Sord: "asc",
            ThenBySidx: "number",
            ThenBySord: "asc",
            SkipCount: null,
            MaxResultCount: null,
          },
          isFirst: true, // 是否第一次加载
        };
    },
    methods: {
        loadDataListfilter() {
          this.isFirst = false;
          this.filter.MaxResultCount = this.pageObj.pageSize;
          this.filter.SkipCount = this.pageObj.currentSkipCount;
          this.getTerminals();
        },
        getTerminals() {
          this.listLoading = true;
          this.$store
            .dispatch("数据查询接口地址", this.filter)
            .then((response) => {
              this.pageObj.totalSize = response.result.totalCount;
              this.list = this.list.concat(response.result.items);
              this.listLoading = false;
            })
            .catch((ex) => {
              alert(ex);
            });
        },
        scrollLoad() {
          if (this.isFirst) {
            this.loadDataListfilter();
          }
          else {
            // this.$message.success('加载下一页');
            this.pageObj.currentPage = this.pageObj.currentPage + 1;
            this.pageObj.currentSkipCount =
              (this.pageObj.currentPage - 1) * this.pageObj.pageSize;
            this.loadDataListfilter();
          }
        },
    },
};
</script>

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值