手写VUE 分页功能

html 部分

<table>
	<th>
		<td>ID</td><td>名称</td><td>班级</td>
	</th>
	<tr v-for="(v,i) in items">
		<td>{{v.id}}</td><td>{{v.name}}</td><td>{{v.class}}</td>
	</tr>
</table>

<!---分页-->

<nav >

	<ul>
		<!--上一页-->
		<li @click="PrePage(index)" :class="page.pageNo<=1?'disabled':''">
			<a aria-albel="Previous">
				<span aria-hidden="true">&laquo;</span>
			</a>
		</li>
		<!---当前页----->
		<li :class="page.pageNo==index?'active':''" v-for="index in pages" :key="index" @click="curPage(index)">
			<a>{{index}}</a>
		</li>
		<!----下一页----->
		<li @click="NextPage()" :class="page.pageNo>=page.pageTotal?'disabled':''">
			<a aria-label="Next">
				<span aria-hidden="true">&raquo;</span>
			</a>
		</li>
	</ul>

</nav>

 vuejs 部分

window.onload=function(){
	new Vue({
		el:"#my",
		data:{
			lists:[],
			page:{
				pageTotal:1,
				pageNo:1,
				pageSize:10
			}
		},
		methods:{			
			getList(i=this.page.pageNo){
				this.page.pageNo=i 
				axios({
					method:'get',
					url:'http:/localhost:7000/home/page/${this.page.pageNo}/{$this.page.pageSize}'
				}).then(res=>{
					console.log(res)
					let {data,pageTotal,rows}=res.data
					this.lists=data;
					this.page.pageTotal=pageTotal
				}).catch(error=>{
					console.log(error)
				})
			}
			curPage(i){//当前页
				if(isNumber(this.getList(i);)){
					this.getList(i);
				}
			},
			PrePage(){
				if(this.page.pageNo>1){
					this.getList(--this.page.pageNo)
				}
			},
			NextPage(){
				if(this.page.pageNo<this.page.pageTotal){
					this.getList(++this.page.pageNo)
				}
			}
		},
		computed:{
			///添加省略号的位置有a左侧b两侧c右侧
			pages(){
				let {pageNo,pageTotal}=this.page;
				//1.总的页数小于10
				if(pageTotal<10) return pageTotal;
				//2.总的页数大于10,添加省略号
				//2.1总的页数小于5
				if(pageNo<=5){
					return [1,2,3,4,5,6,'...',pageTotal];
				//2.2页码大于21-5
				}else if(pageNo>pageTotal-5){
					return [1,'...',pageTotal-6,pageTotal-5,pageTotal-4,pageTotal-3,pageTotal-2,pageTotal-1,pageTotal];
				//2.3页码在5-17之间
				}else{
					return [1,'...',pageNo-3,pageNo-2,pageNo-1,pageNo,pageNo+1,pageNo+2,pageNo+3,'...'];
				}
			}
		},
		mounted(){
			this.getList(1)
		}
	})
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值