基于vue实现分页/翻页组件paginator示例


Posted in Javascript onMarch 09, 2017

序言

项目需要自己写了一个基于vue的paginator分享出来,欢迎各路好汉来指教

当页数小于999(包括999)页

基于vue实现分页/翻页组件paginator示例

页数大于999页

基于vue实现分页/翻页组件paginator示例

首页或尾页disabled

基于vue实现分页/翻页组件paginator示例

10页之内显示

基于vue实现分页/翻页组件paginator示例

Usage

参数

pageCount: 整数,代表总页数

监听事件

@togglePage: 监听切换页面事件,可以获取到当前前往页的页数

父组件调用方法 index.vue

<template lang="html">
  <div>
    <paginator :pageCount="pageCount" @togglePage="togglePage($event)"></paginator>
  </div>
</template>

<script>
export default {
  data(){
    return{
      //总页数
      pageCount: 24
    }
  },
  methods:{
    togglePage(indexPage){
      //打印出当前页数
      console.log(indexPage);
    },
  }
}
</script>

分页组件 paginator.vue

<template lang="html">
  <div class="pagination">
    <ul>
      <li :class="{disabled: curPage == 1}" @click="prevPage" v-if="pageCount > 1">上一页</li>
      <li :class="{active: curPage == 1}" @click="page(1)">1</li>
      <li class="ellipsis" v-show="curPage > 5 && pageCount > 10">...</li>
      <li :class="{active: curPage == index+offset}" v-for="(item,index) in middlePages" @click="page(index+offset)">{{index+offset}}</li>
      <li class="ellipsis" v-show="curPage < bigLimit && pageCount > 10">...</li>
      <li :class="{active: curPage == pageCount}" @click="page(pageCount)" v-if="pageCount > 1">{{pageCount}}</li>
      <li :class="{disabled: curPage == pageCount}" @click="nextPage" v-if="pageCount > 1">下一页</li>
    </ul>
  </div>
</template>

<script>
  export default {
    props:['pageCount'],
    data(){
      return {
        curPage: 1,
      };
    },
    computed:{
      middlePages(){
        if(this.pageCount <= 2){
          return 0;
        }else if(this.pageCount> 2 && this.pageCount <= 10){
          return this.pageCount-2;
        }else{
          return this.curPage > 999 ? 5 : 8;
        }
      },
      bigLimit(){
        return this.middlePages > 5 ? this.pageCount-6 : this.pageCount -3;
      },
      offset(){
        if(this.curPage <= 5){
          return 2;
        }else if(this.curPage >= this.bigLimit){
          return this.bigLimit-2;
        }else{
          return this.middlePages > 5 ? this.curPage-3 : this.curPage-2;
        }
      }
    },
    methods:{
      page(indexPage){
        this.$emit('togglePage',indexPage);
        this.curPage = indexPage;
      },
      prevPage(){
        if(this.curPage != 1){
          this.page(this.curPage-1);
        }
      },
      nextPage(){
        if(this.curPage != this.pageCount){
          this.page(this.curPage+1);
        }
      }
    }
  };
</script>

<style lang="css" scoped>
  @import 'styles/vars.css';
  .pagination{
    width: 660px;
    text-align: center;
    ul{
      margin: 40px 0 60px 0;
      li{
        cursor: pointer;
        display: inline-block;
        padding: 5px 9px;
        border: 1px solid #e1e1eb;
        margin-right: 5px;
        &.active{
          background: #4078c0;
          color: #fff;
        }
        &.ellipsis{
          border: none;
        }
        &.disabled{
          color: #dcdcdc;
        }
      }
    }
  }
</style>

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

Javascript 相关文章推荐
javascript将数组插入到另一个数组中的代码
Jan 10 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
Mar 13 Javascript
javascript实现数组内值索引随机化及创建随机数组的方法
Aug 10 Javascript
jQuery实现分章节锚点“回到顶部”动画特效代码
Oct 23 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
Jun 07 Javascript
jQuery联动日历的实例解析
Dec 02 Javascript
详解webpack打包vue时提取css
May 26 Javascript
JS基于正则表达式实现的密码强度验证功能示例
Sep 21 Javascript
js判断节假日实例代码
Dec 27 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
Jun 10 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
Nov 09 Javascript
javascript实现蒙版与禁止页面滚动
Jan 11 Javascript
vue.js利用Object.defineProperty实现双向绑定
Mar 09 #Javascript
javascript遍历json对象的key和任意js对象属性实例
Mar 09 #Javascript
微信小程序 五星评价功能的实现
Mar 09 #Javascript
javascript实现数据双向绑定的三种方式小结
Mar 09 #Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
Mar 09 #Javascript
Vue监听数据对象变化源码
Mar 09 #Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
Mar 09 #Javascript
You might like
坏狼的PHP学习教程之第1天
2008/06/15 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
php基于str_pad实现卡号不足位数自动补0的方法
2014/11/12 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
2014/11/15 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
CI框架常用函数封装实例
2016/11/21 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
php实现表单提交上传文件功能
2018/05/28 PHP
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
在Javascript中 声明时用&quot;var&quot;与不用&quot;var&quot;的区别
2013/04/15 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
JQuery创建DOM节点的方法
2015/06/11 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
vue.js实现仿原生ios时间选择组件实例代码
2016/12/21 Javascript
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
2017/06/04 Javascript
解决html input验证只能输入数字,不能输入其他的问题
2017/07/21 Javascript
vue组件父子间通信详解(三)
2017/11/07 Javascript
深入理解 Koa 框架中间件原理
2018/10/18 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
element-ui 本地化使用教程详解
2019/10/28 Javascript
JavaScript前端开发时数值运算的小技巧
2020/07/28 Javascript
JavaScript常用8种数组去重代码实例
2020/09/09 Javascript
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
如何使用Python自动控制windows桌面
2019/07/11 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
2020/05/27 Python
Python类的继承super相关原理解析
2020/10/22 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
2020/11/11 Python
Shell如何接收变量输入
2016/08/06 面试题
计算机软件个人的自荐信范文
2013/12/01 职场文书
乡镇保密工作责任书
2014/07/28 职场文书
企业催款函范本
2015/06/24 职场文书
评测 | 大屏显示带收音机的高端音箱,JBL TUNE2便携式插卡音箱实测
2021/04/24 无线电
整理Python中常用的conda命令操作
2021/06/15 Python
python如何利用cv2.rectangle()绘制矩形框
2022/12/24 Python