基于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 相关文章推荐
在第一个input框内输入内容.textarea自动得到第一个文件框的值的javascript代码
Apr 20 Javascript
用函数式编程技术编写优美的 JavaScript_ibm
May 16 Javascript
JS 面向对象之神奇的prototype
Feb 26 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
Dec 14 Javascript
jquery绑定事件不生效的解决方法
Feb 11 Javascript
jquery实现的一个文章自定义分段显示功能
May 23 Javascript
javascript二维数组转置实例
Jan 22 Javascript
JS实现小球的弹性碰撞效果
Nov 11 Javascript
小程序实现左右来回滚动字幕效果
Dec 28 Javascript
对于防止按钮重复点击的尝试详解
Apr 22 Javascript
vue-router的hooks用法详解
Jun 08 Javascript
Vue如何循环提取对象数组中的值
Nov 18 Vue.js
微信小程序中实现手指缩放图片的示例代码
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
php fckeditor 调用的函数
2009/06/21 PHP
基于OpenCV的PHP图像人脸识别技术
2009/10/11 PHP
使用php实现截取指定长度
2013/08/06 PHP
详解PHP的Yii框架中扩展的安装与使用
2016/04/01 PHP
javascript之函数直接量(function(){})()
2007/06/29 Javascript
动态标签 悬停效果 延迟加载示例代码
2013/11/21 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
JQuery.Ajax()的data参数类型实例详解
2015/11/20 Javascript
使用jQuery监听DOM元素大小变化
2016/02/24 Javascript
学JavaScript七大注意事项【必看】
2016/05/04 Javascript
JQuery在循环中绑定事件的问题详解
2016/06/02 Javascript
基于vue中对鼠标划过事件的处理方式详解
2018/08/22 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
2018/09/04 Javascript
vue-router实现嵌套路由的讲解
2019/01/19 Javascript
小程序实现上下移动切换位置
2019/09/23 Javascript
vue-cli4.x创建企业级项目的方法步骤
2020/06/18 Javascript
如何用JS模拟实现数组的map方法
2020/07/30 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
2020/11/06 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
[51:06]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第二场 1月26日
2021/03/11 DOTA
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
Python正则表达式匹配数字和小数的方法
2019/07/03 Python
pytorch 使用加载训练好的模型做inference
2020/02/20 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
2020/10/26 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
2021/02/07 Python
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
鸿星尔克广告词
2014/03/21 职场文书
三万活动总结
2014/04/28 职场文书
党员服务承诺书
2014/05/28 职场文书
研究生求职自荐书
2014/06/23 职场文书
学校安全责任书范本
2014/07/23 职场文书
2014标准社保办理委托书
2014/10/06 职场文书
小学生思想品德评语
2014/12/31 职场文书
2016年大学迎新工作总结
2015/10/14 职场文书