vue+elementUI组件table实现前端分页(后端接口没有做分页时)

背景:在现在这个盛行前后端分离的现状下,前后端都是各自负责自己的职责,在表格分页这一块,有时候后端未给你做分页,或者忘记给你做分页了,你就可以采用以下的方法自己对表格进行分页

首先效果图如下:
在这里插入图片描述
未作分页:
在这里插入图片描述

做了分页后:
在这里插入图片描述
看完效果图直接上demo:

<template>
	<div id="app">
		    <el-table
		      :data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)"
		      style="width: 100%">
		      <el-table-column
		        prop="date"
		        label="日期"
		        >
		      </el-table-column>
		      <el-table-column
		        prop="name"
		        label="姓名"
		       >
		      </el-table-column>
		      <el-table-column
		        prop="address"
		        label="地址">
		      </el-table-column>
		    </el-table>
			<!-- 分页器 -->
			<div class="block" style="margin-top:15px;">
				<el-pagination align='center' @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[2,5,10,20]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="tableData.length">
				</el-pagination>
			</div>

	</div>
</template>

<script>
export default{
	data(){
		return{
			tableData: 
			[{
				date: '2016-05-02',
				name: 'a',
				address: '上海市普陀区金沙江路 1518 弄'
			  }, 
			  {
				date: '2016-05-04',
				name: 'b',
				address: '上海市普陀区金沙江路 1517 弄'
			  }, 
			  {
				date: '2016-05-01',
				name: 'c',
				address: '上海市普陀区金沙江路 1519 弄'
			  }, 
			  {
				date: '2016-05-03',
				name: 'd',
				address: '上海市普陀区金沙江路 1516 弄'
			  },
			  {
				date: '2016-05-03',
				name: 'e',
				address: '上海市普陀区金沙江路 1516 弄'
			  },
			  {
				date: '2016-05-03',
				name: 'f',
				address: '上海市普陀区金沙江路 1516 弄'
			  },
			  {
				date: '2016-05-03',
				name: 'g',
				address: '上海市普陀区金沙江路 1516 弄'
			  },
			  {
				date: '2016-05-03',
				name: 'h',
				address: '上海市普陀区金沙江路 1516 弄'
			  },
			  {
				date: '2016-05-03',
				name: 'i',
				address: '上海市普陀区金沙江路 1516 弄'
			  },
			  {
				date: '2016-05-03',
				name: 'j',
				address: '上海市普陀区金沙江路 1516 弄'
			  },
			  ],
			  currentPage: 1, // 当前页码
			  total: 10, // 总条数
			  pageSize: 2 // 每页的数据条数
		}
	},
	methods:{
		 handleSizeChange(val) {
			console.log(`每页 ${val} 条`);
			this.currentPage = 1;
			this.pageSize = val;
		},
		handleCurrentChange(val) {
			console.log(`当前页: ${val}`);
			this.currentPage = val;
		}
		    	
	}
}
</script>

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

重点:
slice() 方法可从已有的数组中返回选定的元素。

arrayObject.slice(start,end) 

参数start:必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
参数end:可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

el-table中的data数据
:data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)"//自己能体会

设置分页器total等于table数据的长度

:total="tableData.length"

看官网分页器还有两个事件
在这里插入图片描述

//pageSize改变时触发的事件
 handleSizeChange(val) {
	console.log(`每页 ${val} 条`);
	this.currentPage = 1; //始终保持第一页
	this.pageSize = val; //将改变的值赋给pageSize
},
//当前页码发生改变时触发的事件
handleCurrentChange(val) {
	console.log(`当前页: ${val}`);
	this.currentPage = val; //改变当前页码
}

各位铁汁们,有问题的时候欢迎留言交流呀

  • 11
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
对于 el-table 表格分页且可以拖拽的功能,你可以使用 Element UI 提供的 el-pagination 分页组件el-table-column 的 sortable 属性来实现。以下是一个示例代码: ```html <template> <el-table :data="tableData" :default-sort="{ prop: 'date', order: 'descending' }" :row-key="row => row.id" :header-cell-style="{ 'background-color': '#f5f7fa', 'color': '#333' }" style="width: 100%;" @sort-change="handleSortChange" > <el-table-column prop="name" label="Name" sortable width="180" ></el-table-column> <el-table-column prop="date" label="Date" sortable width="180" ></el-table-column> <el-table-column prop="address" label="Address" width="180" ></el-table-column> <el-table-column label="Actions" width="120" > <template slot-scope="scope"> <span class="action-button">Edit</span> <span class="action-button">Delete</span> </template> </el-table-column> </el-table> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total" style="margin-top: 20px; text-align: right;" ></el-pagination> </template> <script> export default { data() { return { tableData: [ { id: 1, name: 'John Doe', date: '2021-01-01', address: '123 Main St' }, { id: 2, name: 'Jane Smith', date: '2021-02-01', address: '456 Elm St' }, // more data... ], currentPage: 1, pageSize: 10, total: 20, }; }, methods: { handleSortChange(sort) { // 排序逻辑 console.log(sort); }, handleSizeChange(size) { // 每页显示条数改变逻辑 console.log(size); }, handleCurrentChange(page) { // 当前页码改变逻辑 console.log(page); }, }, }; </script> <style scoped> .action-button { color: #409eff; cursor: pointer; margin-right: 10px; } </style> ``` 在这个示例中,el-table 的数据通过 `tableData` 属性进行绑定,el-pagination 的当前页码、每页显示条数和总数分别绑定到 `currentPage`、`pageSize` 和 `total` 属性。你可以根据实际情况进行调整和修改。 需要注意的是,以上代码仅提供了分页和排序的基本实现,拖拽功能需要根据具体需求进行自定义开发,可以使用 Element UI 提供的 el-draggable 组件结合 el-table 实现拖拽功能。具体实现方式可以参考 Element UI 官方文档中的示例和说明。 希望这个示例可以帮助到你!如果有任何问题,请随提问。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值