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 相关文章推荐
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
Jan 03 Javascript
jquery eval解析JSON中的注意点介绍
Aug 23 Javascript
js获取IFRAME当前的URL的方法
Nov 13 Javascript
Jquery自定义button按钮的几种方法
Jun 11 Javascript
浅谈Javascript 数组与字典
Jan 29 Javascript
JavaScript实现将UPC转换成ISBN的方法
May 26 Javascript
js数组如何添加json数据及js数组与json的区别
Oct 27 Javascript
Bootstrap CDN和本地化环境搭建
Oct 26 Javascript
bootstrap table操作技巧分享
Feb 15 Javascript
基于JS实现仿百度百家主页的轮播图效果
Mar 06 Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
May 21 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
Jan 05 Vue.js
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
php自动加载机制的深入分析
2013/06/08 PHP
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
2014/11/28 PHP
php获取文章上一页与下一页的方法
2014/12/01 PHP
ThinkPHP实现支付宝接口功能实例
2014/12/02 PHP
php array_udiff_assoc 计算两个数组的差集实例
2016/11/12 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
chrome原生方法之数组
2011/11/30 Javascript
JavaScript中“过于”犀利地for/in循环使用示例
2013/10/22 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
2015/01/27 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
浅谈Jquery为元素绑定事件
2015/04/27 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
详解JSONObject和JSONArray区别及基本用法
2017/10/25 Javascript
Angular中sweetalert弹框的基本使用教程
2018/07/22 Javascript
vue props对象validator自定义函数实例
2019/11/13 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
2021/01/07 Vue.js
python日志记录模块实例及改进
2017/02/12 Python
对django xadmin自定义菜单的实例详解
2019/01/03 Python
对python numpy.array插入一行或一列的方法详解
2019/01/29 Python
使用PyQt4 设置TextEdit背景的方法
2019/06/14 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
python装饰器的特性原理详解
2019/12/25 Python
使用pycharm和pylint检查python代码规范操作
2020/06/09 Python
运输服务质量承诺书
2014/03/27 职场文书
副董事长岗位职责
2014/04/02 职场文书
婚前协议书
2014/04/15 职场文书
《恐龙》教学反思
2014/04/27 职场文书
校园绿化美化方案
2014/06/08 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
2015年秋季新学期寄语
2015/03/25 职场文书
总账会计岗位职责
2015/04/02 职场文书