vue实现前端分页完整代码


Posted in Javascript onJune 17, 2020

本文实例为大家分享了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,已经超过最大的范围值,所以最大范围到6
2、如果是大于6,那么最大值就是最大值,最小变成all-4
3、如果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="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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS操作Cookies包括(读取添加与删除)
Dec 26 Javascript
jQuery获取iframe的document对象的方法
Oct 10 Javascript
javascript Deferred和递归次数限制实例
Oct 21 Javascript
Jquery搜索父元素操作方法
Feb 10 Javascript
JS实现简单的图书馆享元模式实例
Jun 30 Javascript
轻松理解JavaScript之AJAX
Mar 15 Javascript
基于JavaScript实现验证码功能
Apr 01 Javascript
自定义类似于jQuery UI Selectable 的Vue指令v-selectable
Aug 23 jQuery
AngularJS动态添加数据并删除的实例
Feb 27 Javascript
js实现web调用摄像头 js截取视频画面
Apr 21 Javascript
原生javascript如何实现共享onload事件
Jul 03 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
Sep 01 Javascript
JS实现网站楼层导航效果代码实例
Jun 16 #Javascript
利用webpack理解CommonJS和ES Modules的差异区别
Jun 16 #Javascript
JS 5种遍历对象的方式
Jun 16 #Javascript
js实现小球在页面规定的区域运动
Jun 16 #Javascript
Vue结合路由配置递归实现菜单栏功能
Jun 16 #Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
Jun 16 #Javascript
详解JS预解析原理
Jun 16 #Javascript
You might like
cakephp2.X多表联合查询join及使用分页查询的方法
2017/02/23 PHP
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
png在IE6 下无法透明的解决方法汇总
2015/05/21 Javascript
Js数组排序函数sort()介绍
2015/06/08 Javascript
JavaScript实现简单的tab选项卡切换
2016/01/05 Javascript
jQuery Mobile框架中的表单组件基础使用教程
2016/05/17 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
2019/04/07 Javascript
使用JS判断页面是首次被加载还是刷新
2019/05/26 Javascript
构建Vue大型应用的10个最佳实践(小结)
2019/11/07 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
2020/02/16 Javascript
Vue看了就会的8个小技巧
2021/01/21 Vue.js
python读文件保存到字典,修改字典并写入新文件的实例
2018/04/23 Python
Tensorflow之Saver的用法详解
2018/04/23 Python
python爬取网页转换为PDF文件
2018/06/07 Python
Python实现PyPDF2处理PDF文件的方法示例
2019/09/25 Python
pygame实现非图片按钮效果
2019/10/29 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
2020/04/27 Python
python使用smtplib模块发送邮件
2020/12/17 Python
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
萨克斯第五大道精品百货店: Saks Fifth Avenue
2017/04/28 全球购物
汇集了世界上最好的天然和有机美容产品:LoveLula
2018/02/05 全球购物
美国班级戒指、帽子和礼服、毕业产品、年鉴:Balfour
2018/11/01 全球购物
一份全面的PHP面试问题考卷
2012/07/15 面试题
经典c++面试题四
2015/05/14 面试题
cf搞笑广告词
2014/03/14 职场文书
安全生产管理责任书
2014/04/16 职场文书
小学校本教研总结
2015/08/13 职场文书
2016年优秀教师先进事迹材料
2016/02/26 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书
Python中OpenCV实现查找轮廓的实例
2021/06/08 Python
JavaScript流程控制(分支)
2021/12/06 Javascript
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android
Python实现数据的序列化操作详解
2022/07/07 Python