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 相关文章推荐
基于jquery实现状态限定编辑的代码
Feb 11 Javascript
javascript文件中引用依赖的js文件的方法
Mar 17 Javascript
js获取url传值的方法
Dec 18 Javascript
JS获取input file绝对路径的方法(推荐)
Aug 02 Javascript
jquery 动态增加删除行的简单实例(推荐)
Oct 12 Javascript
JavaScript之Vue.js【入门基础】
Dec 06 Javascript
ES6正则的扩展实例详解
Apr 25 Javascript
基于Three.js实现360度全景图片
Dec 30 Javascript
使用post方法实现json往返传输数据的方法
Mar 30 Javascript
新手快速入门JavaScript装饰者模式与AOP
Jun 24 Javascript
JQuery复选框全选效果如何实现
May 08 jQuery
前端使用crypto.js进行加密的函数代码
Aug 16 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
有道搜索和IP138的IP的API接口(PHP应用)
2012/11/29 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
Angular2学习笔记——详解NgModule模块
2016/12/02 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
2016/12/20 Javascript
Js实现京东无延迟菜单效果实例(demo)
2017/06/02 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
详解如何更好的使用module vuex
2019/03/27 Javascript
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
Vue.set 全局操作简单示例
2019/09/19 Javascript
Vue数据双向绑定原理实例解析
2020/05/15 Javascript
[40:57]TI4 循环赛第二日 iG vs EG
2014/07/11 DOTA
浅析python 内置字符串处理函数的使用方法
2014/06/11 Python
Django中使用locals()函数的技巧
2015/07/16 Python
常见的python正则用法实例讲解
2016/06/21 Python
tensorflow输出权重值和偏差的方法
2018/02/10 Python
python中append实例用法总结
2019/07/30 Python
利用Python检测URL状态
2019/07/31 Python
Python时间序列缺失值的处理方法(日期缺失填充)
2019/08/11 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
Python 过滤错误log并导出的实例
2019/12/26 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
HTML5 Notification(桌面提醒)功能使用实例
2014/03/17 HTML / CSS
国际领先的在线时尚服装和配饰店:DressLily
2019/03/03 全球购物
大专自我鉴定范文
2013/10/23 职场文书
考试退步检讨书
2014/01/15 职场文书
小学运动会演讲稿
2014/08/25 职场文书
中华在我心中演讲稿
2014/09/13 职场文书
公司向个人借款协议书范本
2014/10/09 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书
2019年冬至:天冷暖人心的问候祝福语大全
2019/12/20 职场文书