您的位置:首页技术文章
文章详情页

vue实现前端分页完整代码

【字号: 日期:2023-01-12 16:17:50浏览:4作者:猪猪

本文实例为大家分享了vue实现前端分页的具体代码,供大家参考,具体内容如下

首先,做出来的效果如图所示,具体的Ajax请求数据可以写在点击函数中分页效果算是比较费脑子的,里面计算有些麻烦,本文上完整代码,一起学习进步

vue实现前端分页完整代码

“上一页”写两个li元素,如果已经是第一页,那么就禁止鼠标点击,如果不是就curr减减,并且可以点击 同理“下一页”也一样 中间部分是通过indexs循环,indexs通过computed计算得出

<div class='page-bar'> <ul> <li v-if='cur>1'><a v-on:click='cur--,pageClick()'>上一页</a></li> <li v-if='cur==1'><a class='banclick'>上一页</a></li> <!--当前页背景色为蓝色--> <li v-for='index in indexs' v-bind:class='{ ’active’: cur == index}'> <a v-on:click='btnClick(index)'>{{ index }}</a> </li> <li v-if='cur<all'><a v-on:click='cur++,pageClick()'>下一页</a></li> <li v-if='cur == all'><a class='banclick'>下一页</a></li> <li><a>共<i>{{all}}</i>页</a></li> </ul></div>

难点就是IF嵌套语句

1、每次显示5个数据,如果大于3,范围从3到6,如果到达7,那么下边加2变成9,已经超过最大的范围值,所以最大范围到62、如果是大于6,那么最大值就是最大值,最小变成all-43、如果3以内,默认不跳动

var pageBar = new Vue({ el: ’.page-bar’, data: { all: 8, //总页数 cur: 1//当前页码 }, watch: { cur: function(oldValue , newValue){ console.log(arguments); } }, methods: { btnClick: function(data){ if(data != this.cur){this.cur = data; } }, pageClick: function(){ console.log(’现在在’+this.cur+’页’); } }, computed: { indexs: function(){ var left = 1; var right = this.all; var ar = []; if(this.all>= 5){ //这里最大范围从3到6,如果到达7,那么下边加2变成9,已经超过最大的范围值 if(this.cur > 3 && this.cur < this.all-1){ //以4为参考基准,左面加2右边加2 left = this.cur - 2 right = this.cur + 2 }else{if(this.cur<=3){ left = 1 right = 5}else{ right = this.all left = this.all -4} } } while (left <= right){ ar.push(left) left ++ } console.log(ar); return ar } }})

全部代码:

<!DOCTYPE html><html><head><meta name='viewport' content='width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no'/><meta charset='utf-8'><title></title><meta name='keywords' content='' /><meta name='description' content='' /><script type='text/javascript' src='https://www.haobala.com/bcjs/js/vue.min.js'></script><style>.page-bar{ margin:40px;}ul,li{ margin: 0px; padding: 0px;}li{ list-style: none}.page-bar li:first-child>a { margin-left: 0px}.page-bar a{ border: 1px solid #ddd; text-decoration: none; position: relative; float: left; padding: 6px 12px; margin-left: -1px; line-height: 1.42857143; color: #337ab7; cursor: pointer}.page-bar a:hover{ background-color: #eee;}.page-bar a.banclick{ cursor:not-allowed;}.page-bar .active a{ color: #fff; cursor: default; background-color: #337ab7; border-color: #337ab7;}.page-bar i{ font-style:normal; color: #d44950; margin: 0px 4px; font-size: 12px;}</style></head><body> <div class='page-bar'> <ul> <li v-if='cur>1'><a v-on:click='cur--,pageClick()'>上一页</a></li> <li v-if='cur==1'><a class='banclick'>上一页</a></li> <!--当前页背景色为蓝色--> <li v-for='index in indexs' v-bind:class='{ ’active’: cur == index}'> <a v-on:click='btnClick(index)'>{{ index }}</a> </li> <li v-if='cur<all'><a v-on:click='cur++,pageClick()'>下一页</a></li> <li v-if='cur == all'><a class='banclick'>下一页</a></li> <li><a>共<i>{{all}}</i>页</a></li> </ul></div><script type='text/javascript'>var pageBar = new Vue({ el: ’.page-bar’, data: { all: 8, //总页数 cur: 1//当前页码 }, watch: { cur: function(oldValue , newValue){ console.log(arguments); } }, methods: { btnClick: function(data){ if(data != this.cur){this.cur = data; } }, pageClick: function(){ console.log(’现在在’+this.cur+’页’); } }, computed: { indexs: function(){ var left = 1; var right = this.all; var ar = []; if(this.all>= 5){ //这里最大范围从3到6,如果到达7,那么下边加2变成9,已经超过最大的范围值 if(this.cur > 3 && this.cur < this.all-1){ //以4为参考基准,左面加2右边加2 left = this.cur - 2 right = this.cur + 2 }else{if(this.cur<=3){ left = 1 right = 5}else{ right = this.all left = this.all -4} } } while (left <= right){ ar.push(left) left ++ } console.log(ar); return ar } }})</script></body></html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。

标签: Vue
相关文章: