基于vue.js实现的分页


Posted in Javascript onMarch 13, 2018

本文主要介绍基于vue的分页原生写法。

先po上效果图:

基于vue.js实现的分页

html部分,将page作为一个单独的组件

<script type="text/x-template" id="page">
  <ul class="pagination">
   <li v-show="current != 1" @click="current-- && goto(current)">
    <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >上一页</a>
   </li>
   <li v-for="index in pages" @click="goto(index)" :class="{'active':current == index}" :key="index">
    <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >{{index}}</a>
   </li>
   <li v-show="allpage != current && allpage != 0 " @click="current++ && goto(current++)">
    <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >下一页</a>
   </li>
  </ul>
 </script>
 <div id="app">
  <page></page>
 </div>

js部分:

<script>
  Vue.component("page", {
   template: "#page",
   data: function () {
    return {
     current: 1, // 当前页码
     showItem: 5, // 最少显示5个页码
     allpage: 13 // 总共的
    }
   },
   computed: {
    pages: function () {
     var pag = [];
     if (this.current < this.showItem) { //如果当前的激活的项 小于要显示的条数
      //总页数和要显示的条数那个大就显示多少条
      var i = Math.min(this.showItem, this.allpage);
      while (i) {
       pag.unshift(i--);
      }
     } else { //当前页数大于显示页数了
      var middle = this.current - Math.floor(this.showItem / 2), //从哪里开始
       i = this.showItem;
      if (middle > (this.allpage - this.showItem)) {
       middle = (this.allpage - this.showItem) + 1
      }
      while (i--) {
       pag.push(middle++);
      }
     }
     return pag
    }
   },
   methods: {
    goto: function (index) {
     if (index == this.current) return;
     this.current = index;
     //这里可以发送ajax请求
    }
   }
  })
  var vm = new Vue({
   el: '#app',
  })
 </script>

css部分:

body {
   font-family: "Segoe UI";
  }
  li {
   list-style: none;
  }
  a {
   text-decoration: none;
  }
  .pagination {
   position: relative;
  }
  .pagination li {
   display: inline-block;
   margin: 0 5px;
  }
  .pagination li a {
   padding: .5rem 1rem;
   display: inline-block;
   border: 1px solid #ddd;
   background: #fff;
   color: #0E90D2;
  }
  .pagination li a:hover {
   background: #eee;
  }
  .pagination li.active a {
   background: #0E90D2;
   color: #fff;
  }

最后附上github地址:https://github.com/AmberWuWu/vue-page

总结

以上所述是小编给大家介绍的基于vue.js实现的分页,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
使用GruntJS链接与压缩多个JavaScript文件过程详解
Aug 02 Javascript
JavaScript数值转换的三种方式总结
Jul 31 Javascript
JavaScript实现生成GUID(全局统一标识符)
Sep 05 Javascript
jQuery中fadeOut()方法用法实例
Dec 24 Javascript
js实现圆盘记速表
Aug 03 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
Sep 15 Javascript
js给table赋值的实例代码
Oct 13 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
Oct 14 Javascript
jquery实现转盘抽奖功能
Jan 06 Javascript
详解vue表单——小白速看
Apr 08 Javascript
webpack项目轻松混用css module的方法
Jun 12 Javascript
浅谈Angular 观察者模式理解
Nov 01 Javascript
微信小程序中实现手指缩放图片的示例代码
Mar 13 #Javascript
基于vue中css预加载使用sass的配置方式详解
Mar 13 #Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
Mar 13 #Javascript
vue加载自定义的js文件方法
Mar 13 #Javascript
vue轮播图插件vue-concise-slider的使用
Mar 13 #Javascript
vue页面离开后执行函数的实例
Mar 13 #Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
Mar 13 #Javascript
You might like
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
2009/07/01 PHP
PHP设计模式之工厂模式实例总结
2017/09/01 PHP
潜说js对象和数组
2011/05/25 Javascript
基于jQuery的图片剪切插件
2011/08/03 Javascript
javascript中window.event事件用法详解
2012/12/11 Javascript
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
JavaScript中使用arguments获得函数传参个数实例
2014/08/27 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
基于JavaScript如何制作遮罩层对话框
2016/01/26 Javascript
JS实现的仿QQ空间图片弹出效果代码
2016/02/23 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
javascript中this关键字详解
2016/12/12 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
VUE实现一个分页组件的示例
2017/09/13 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
2018/03/05 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
Vue-cropper 图片裁剪的基本原理及思路讲解
2018/04/17 Javascript
小程序click-scroll组件设计
2019/06/18 Javascript
[01:46]TI4西雅图DOTA2前线报道 中国选手抱团调时差
2014/07/08 DOTA
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
Python实现的直接插入排序算法示例
2018/04/29 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
Python 用matplotlib画以时间日期为x轴的图像
2019/08/06 Python
python set集合使用方法解析
2019/11/05 Python
芬兰汽车配件商店:Autonvaraosat24
2017/01/30 全球购物
Chemist Warehouse官方海外旗舰店:澳洲第一连锁大药房
2017/08/25 全球购物
英国露营设备和户外服装购物网站:Simply Hike
2019/05/05 全球购物
JS原生实现轮播图的几种方法
2021/03/23 Javascript
国际贸易个人求职信范文
2014/01/04 职场文书
乔迁宴答谢词
2014/01/21 职场文书
服务员态度差检讨书
2014/10/28 职场文书
护士求职简历自我评价
2015/03/10 职场文书
2015小学音乐教师个人工作总结
2015/07/21 职场文书
大学生先进个人主要事迹材料
2015/11/04 职场文书