美文网首页
element -- Table表格中的无限加载

element -- Table表格中的无限加载

作者: Easy_伊 | 来源:发表于2020-03-25 10:10 被阅读0次

项目中在表格中用到了无限加载,可用的实现方法有3种,三种方法各有优缺点。

1、使用element的InfiniteScroll 无限滚动

妄想加在表格内,失败了。加在表格外层,表头会跟着移动,不是特别理想。
https://element.eleme.cn/#/zh-CN/component/infiniteScroll

<div
      v-infinite-scroll="loadMore"
      infinite-scroll-disabled="loading"
      infinite-scroll-distance="20"
      style="height:500px;overflow: auto;"
        >
      <el-table :data="tableData" >
        <el-table-column prop="name" label="名称"></el-table-column>
      </el-table>
      <p v-if="tableData.length&&loading" class="list-loading">加载中...</p>
      <p v-if="tableData.length&&isEnd" class="list-end">没有更多了</p>
</div>

2、监听表格滚动

在main.js中注册全局事件,监听表格滚动位置是否到底,触发绑定方法。
在需要无限加载的表格中绑定事件v-loadmore="loadMore"(表格滑动到底部触发loadMore)
https://www.jianshu.com/p/4f0142d737a0

Vue.directive('loadmore', {
  bind(el, binding) {
    var p = 0;
    var t = 0;
    var down = true;
    var selectWrap = el.querySelector('.el-table__body-wrapper')
    selectWrap.addEventListener('scroll', function () {
      //判断是否向下滚动
      p = this.scrollTop;
      if (t < p) {
        down = true;
      } else {
        down = false;
      }
      t = p;
      //判断是否到底
      const sign = 10;
      const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
      if (scrollDistance <= sign && down) {
        binding.value()
      }
    })
  }
})

3、使用vue-infinite-loading插件,用法如下链接

https://codepen.io/regchiu/pen/pMPPQZ

相关文章

网友评论

      本文标题:element -- Table表格中的无限加载

      本文链接:https://www.haomeiwen.com/subject/ygttuhtx.html