el-table滚动加载更多

main.js里注册指令

Vue.directive('loadmore', {
      bind(el, binding) {
        const selectWrap = el.querySelector('.el-table__body-wrapper')
        selectWrap.addEventListener('scroll', function() {
          let sign = 0
          const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight
          if (scrollDistance <= sign) {
            binding.value()
          }
        })
      }
    })

scrollHeight:指元素的总高度,包含滚动条中的内容。只读属性。不带px单位。就是下图中,54条数据的高度,但是因为有滚动条,所以屏幕看不到这么高
scrollTop:当元素出现滚动条时,向下拖动滚动条,内容向上滚动的距离。可读可写属性。不带px单位。如果该元素没有滚动条,则scrollTop的值为0,该值只能是正值。就是下图中红色框的高度
clientHeight:元素客户区的大小,指的是元素内容及其边框所占据的空间大小,实际上就是可视区域的大小。就是下图红色箭头的高度
scrollHeight-scrollTop-clientHeight=0,这个时候可以就是滚动条滚到底部的时候了。(如果表格有padding,margin值,需要减去)
在这里插入图片描述
使用自定义的事件

<el-table
    :data="build"
    :height="tableheight"
    style="width: 100%"
    v-loadmore="loadMore"
  >
</el-table>

在methods中调用loadMore

//表格滚动加载
tableloadMore () {
  if (this.currentPage < this.totalPage) {
    //当前页数小于总页数就请求 
    //当前页数自增
    this.currentPage++this.$axios({
            method:'get',
            url:this.api+'admin/StockLevel',
            params:{
                enabled:this.value1,
                page:this.page,
                    limit:this.limit
            }
        }).then(res=>{
            this.build = res.data.data.arr
        })
  }else{
      console.log('到底了', this.page)
  }
}
  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现 el-table滚动加载,可以使用 element-ui 提供的 `load` 属性和 `scroll` 事件。 首先,需要设置 el-table 的 `height` 属性,让其具有滚动条。然后,在 el-table 上添加 `@scroll` 事件监听器,当表格滚动时触发事件。 在 `@scroll` 事件处理程序中,可以通过计算表格滚动的距离和表格内容的高度,来判断是否需要加载更多数据。如果滚动距离接近内容高度的底部,就触发 `load` 事件,并传递一个回调函数作为参数,该回调函数用于加载数据并更新表格。 以下是一个示例代码: ```html <template> <el-table :data="tableData" :height="tableHeight" @load="loadData" @scroll="handleScroll"> <el-table-column prop="name" label="Name"></el-table-column> <el-table-column prop="age" label="Age"></el-table-column> <!-- ... --> </el-table> </template> <script> export default { data() { return { tableData: [], currentPage: 1, pageSize: 20, totalCount: 0, tableHeight: 400, // 设置表格高度 }; }, methods: { // 加载数据 loadData(callback) { // 发送请求获取数据 // ... // 更新表格数据 this.tableData = [...this.tableData, ...newData]; // 调用回调函数通知表格加载完成 callback(); }, // 监听表格滚动事件 handleScroll(event) { const tableBody = event.target.querySelector('.el-table__body-wrapper'); const scrollBottom = tableBody.scrollHeight - tableBody.scrollTop - tableBody.clientHeight; if (scrollBottom < 50) { // 当滚动距离接近底部时,触发 load 事件 this.$refs.table.$emit('load'); } }, }, }; </script> ``` 注意,在实际应用中,需要根据具体的业务逻辑进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值