vue+element实现分页功能

一名前端臭弟弟的学习新得!     (´๑•_•๑)

VUE+Element实现数据分页功能
先奉上代码,在慢慢细品。

<template>
<div>
	<div>
	  <ul v-for="(item,i) in pagnote2" :key="i">
	    <li :title="item.artType">{{item.artType}}</li>          
	  </ul>    
	</div>
	<div>
	  <el-pagination  @current-change="handChange"
	     background
	     layout="prev, pager, next"
	     :total="pagtotal"
	     :page-size="pagsize">
	  </el-pagination>
	 </div>	
</div>
</template>
<script>
import axios from 'axios'
export default {
data(){
	return{
		items:[],//存数据
		pagtotal:0,//初始化总条数
		pagsize:1,//定义每页显示的条数
		pagnote:[],//存储操作过后的数据
		pagnote2:[], //存储分页时间每页的数据
	}
},
methods:{
	getLists:function(){
		axios.get('此处调用数据接口').then(res=>{
			console.log(res);//打印接口返回的数据
			this.items=res.data.data;//获取数据
			this.pagtotal=res.data.data.length;//获取数据的长度
			this.getList(this.items, this.pagsize);//调用分页的逻辑,将数据变成我们需要的样子
		}).catch(error=>{
			console.log(error)
		})
	},
	handChange(val) {
		console.log(val);//此处val为当前页数,随点击变化而变化,默认为1
		this.pagnote2=this.pagnote[(val-1)];//将操作好的数据分配到每个页面
	},
	getList(arr, size) {//分页逻辑
		var length = arr.length;
		var newArr = [];
		var i=Math.ceil(length/size*1.0);
		var j = 0;
		while(j<i){
			newArr.push(arr.slice(j*size,size*(j+1)))
			j++;
		}
		this.pagnote=newArr;
		this.pagnote2=newArr[0];     
		console.log("分页",this.pagnote)
	}
},
	mounted:function(){//运行代码
		this.getLists();
	}
}
</script>

开始分析~~~~~~~~~~~~~~~~~~~~

getList(arr, size) {
		var length = arr.length;
		var newArr = [];
		var i=Math.ceil(length/size*1.0);
		var j = 0;
		while(j<i){
			newArr.push(arr.slice(j*size,size*(j+1)))
			j++;
		}
		this.pagnote=newArr;
		this.pagnote2=newArr[0];     
		console.log("分页",this.pagnote)
	}

分页逻辑
1.将数据按照每页需要展示的个数进行展示
2.将数据进行分割
举个例子
假如我有7条数据,准备每页显示2条,我需要分成4组
所以 我需要 7/2=3.5 用 Math.ceil 方法 进行向上取整 得到4 所以我就需要循环4遍 附值给变量 i
定义一个变量 j=0; 每次循环结束让 j加1 判断条件为(j<i)
之后我需要把7条数据两两配对 获得新数据 newarr=[[2条数据],[2条数据],[2条数据],[1条数据]];
重点的来喽
把数据可视化一下
newarr=[[old[0],[old[1]],[[old[2],[old[3]],[[old[4],[old[5]],[[old[6]];
然后需要截取数组用slice
仔细观察截取的逻辑是
slice(0,2)
slice(2,4)
slice(4,6)
slice(6,8)//此处的8是大脑自定为8 因为截取的第二参数大于数组长度时,会截取到数组结束,不会有影响的。
所以 得到
(0乘2,2乘(0+1)) ====》j乘size,size乘(j+1) //size为每页想要显示的条数 循环结束j+1
(1乘2,2乘(1+1)) ====》j乘size,size乘(j+1) 循环结束j+1
(2乘2,2乘(2+1)) ====》j乘size,size乘(j+1) 循环结束j+1
(3乘2) ====》j乘size

杀死这道题       newArr.push(arr.slice(j乘size,size乘(j+1)))//将数据截取然后循环添加到新数组
this.pagnote=newArr;//将新数组赋给 .pagnote
this.pagnote2=newArr[0];分配给第一页的数据,第一页的数据是newArr[0]的数据,用于页面显示

 <el-pagination  @current-change="handChange"  中的@current-change为ElementUI分页插件的页面
 变化触发的事件 默认为1
 	handChange(val) {
		console.log(val);//此处val为当前页数,随点击变化而变化,默认为1  上面说过了
		this.pagnote2=this.pagnote[(val-1)];//将操作好的数据分配到每个页面
	}
因为数据双向绑定 所以一开始 pagnote2=newArr[0]
当分页的页数改变后,触发  handChange 改变 pagnote2的值
第一页的数据等于  newArr[0]
第二页的数据等于  newArr[1]
第三页的数据等于  newArr[2]
所以 this.pagnote2=this.pagnote[(val-1)];   刚才已经把 newArr的值都赋给了 pagnote
这样分页的当前页改变,数据也会显示相对应的数据。       ❀❀❀❀❀❀完结撒花❀❀❀❀❀❀

在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue Element UI提供了el-pagination组件来实现表格数据的分页功能。以下是实现步骤: 1. 在Vue组件中引入el-pagination组件并定义分页属性 ``` <template> <div> <el-table :data="tableData" border> //表格内容 </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"> </el-pagination> </div> </template> <script> export default { data() { return { tableData: [], //表格数据 total: 0, //总记录数 pageSize: 10, //每页记录数 currentPage: 1 //当前页码 }; }, methods: { handleSizeChange(val) { this.pageSize = val; this.getData(); }, handleCurrentChange(val) { this.currentPage = val; this.getData(); }, getData() { //获取数据,并更新this.tableData和this.total } } }; </script> ``` 2. 在el-pagination组件中绑定事件和属性 - @size-change:当每页显示条数改变时触发的事件,调用handleSizeChange方法更新pageSize并重新获取数据。 - @current-change:当当前页码改变时触发的事件,调用handleCurrentChange方法更新currentPage并重新获取数据。 - :current-page:当前页码,绑定到currentPage属性。 - :page-sizes:每页显示条数数组,可以自定义,默认为[10, 20, 30, 40]。 - :page-size:每页显示条数,绑定到pageSize属性。 - layout:分页组件布局。其中total表示总记录数,sizes表示每页显示条数选择器,prev表示上一页按钮,pager表示页码按钮,next表示下一页按钮,jumper表示跳转输入框和确定按钮。 - :total:总记录数,绑定到total属性。 3. 在getData方法中获取数据并更新表格数据和总记录数 ``` getData() { //计算分页查询的参数 const start = (this.currentPage - 1) * this.pageSize; const limit = this.pageSize; //发起分页查询请求 axios.get('/api/data', { params: { start, limit } }).then(response => { this.tableData = response.data.rows; //更新表格数据 this.total = response.data.total; //更新总记录数 }); } ``` 以上就是使用Vue Element UI实现表格数据分页功能的步骤。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值