Element表格实现触底加载更多数据

<template>
	<el-dialog
		title="test"
		:visible="showDialog"
		center
		@close="btnCancle"
		width="1060px"
		:close-on-click-modal="false"
	>
		<el-table
			header-align="center"
			v-loadmore="addData"
			:data="myData"
			height="500"
			style="width: 100%;"
		>
			<el-table-column prop="name" align="center" label="姓名"> </el-table-column>
		</el-table>
	</el-dialog>
</template>

<script>
	export default {
		props: {
			showDialog: {
				type: Boolean,
				default: false,
			},
		},

		data() {
			return {
        myData: [
          {name: 'aaa'},
          {name: 'aaa'},
          {name: 'aaa'},
          {name: 'aaa'},
          {name: 'aaa'},
          {name: 'aaa'},
          {name: 'aaa'},
          {name: 'aaa'},
          {name: 'aaa'},
          {name: 'aaa'}
        ]
      };
		},

    directives: {
        loadmore: {
            bind(el, binding) {
                const selectWrap = el.querySelector(".el-table__body-wrapper");
                selectWrap.addEventListener("scroll", function () {
                    const scrollDistance =
                        this.scrollHeight - this.scrollTop - this.clientHeight;
                    if (scrollDistance <= 0.5) {
                      binding.value()//执行在使用时绑定的函数,在这里即addData方法
                    }
                });
            },
        },
    },

	methods: {
      addData() {
        // 自行添加节流
        // 自行判断暂无更多数据
        this.myData.push(...[{name: 'bbb'},{name: 'bbb'},{name: 'bbb'},{name: 'bbb'},                
        {name: 'bbb'},{name: 'bbb'},{name: 'bbb'}])
      },
	  btnCancle() {
	    this.showDialog = false;
	  },
	},
};
</script>

<style lang="scss" scoped></style>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现"加载更多"的功能,可以使用以下步骤: 1. 在表格中添加一个“加载更多”按钮。 2. 在点击按钮时触发一个事件。 3. 事件中请求更多数据并将其添加到表格中的现有数据中。 4. 更新表格中的数据。 以下是一个示例代码,可以帮助你实现这个功能: ```html <table id="myTable"> <thead> <tr> <th>列1</th> <th>列2</th> <th>列3</th> </tr> </thead> <tbody> <!-- 表格中的现有数据 --> <tr> <td>数据1</td> <td>数据2</td> <td>数据3</td> </tr> <tr> <td>数据4</td> <td>数据5</td> <td>数据6</td> </tr> </tbody> </table> <button id="loadMore">加载更多</button> <script> var data = [ // 更多数据 { col1: '数据7', col2: '数据8', col3: '数据9' }, { col1: '数据10', col2: '数据11', col3: '数据12' } ]; var table = document.getElementById('myTable'); var loadMoreBtn = document.getElementById('loadMore'); var currentIndex = 2; // 从第三个数据开始加载 function addDataToTable() { // 将更多数据添加到表格中 for (var i = currentIndex; i < currentIndex + 2; i++) { var row = document.createElement('tr'); var cell1 = document.createElement('td'); var cell2 = document.createElement('td'); var cell3 = document.createElement('td'); cell1.textContent = data[i].col1; cell2.textContent = data[i].col2; cell3.textContent = data[i].col3; row.appendChild(cell1); row.appendChild(cell2); row.appendChild(cell3); table.querySelector('tbody').appendChild(row); } currentIndex += 2; } loadMoreBtn.addEventListener('click', function() { addDataToTable(); }); </script> ``` 在这个示例代码中,我们在表格中添加了一个“加载更多”按钮,并在点击按钮时触发了`addDataToTable()`函数。该函数从数据数组中获取更多数据,并将其添加到表格中的现有数据中。每次加载两行数据,并且每次加载完之后,`currentIndex`会加2,表示下一次加载数据的起始位置。 注意:这个示例代码仅为演示目的,实际操作中,你需要根据你的实际情况进行相应的修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值