基于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 相关文章推荐
jquery live()重复绑定的解决方法介绍
Jan 03 Javascript
jquery 选取方法都有哪些
May 18 Javascript
jquery+easeing实现仿flash的载入动画
Mar 10 Javascript
JavaScript实现的鼠标响应颜色渐变效果完整实例
Feb 18 Javascript
详解微信第三方小程序代开发
Jun 23 Javascript
vue中如何创建多个ueditor实例教程
Nov 14 Javascript
前端MVVM框架解析之双向绑定
Jan 24 Javascript
解决vue中对象属性改变视图不更新的问题
Feb 23 Javascript
node中间层实现文件上传功能
Jun 11 Javascript
jquery无缝图片轮播组件封装
Nov 25 jQuery
Nuxt.js 数据双向绑定的实现
Feb 17 Javascript
jquery实现两个div中的元素相互拖动的方法分析
Apr 05 jQuery
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 tp验证表单与自动填充函数代码
2012/02/22 PHP
mysql,mysqli,PDO的各自不同介绍
2012/09/19 PHP
php打印输出棋盘的实现方法
2014/12/23 PHP
浅谈php7的重大新特性
2015/10/23 PHP
smarty学习笔记之常见代码段用法总结
2016/03/19 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
php简单中奖算法(实例)
2017/08/15 PHP
深入认识javascript中的eval函数
2009/11/02 Javascript
js的写法基础分析
2011/01/17 Javascript
JavaScript初学者应注意的七个细节详细介绍
2012/12/27 Javascript
jquery Moblie入门—hello world的示例代码学习
2013/01/08 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
分享我对JS插件开发的一些感想和心得
2016/02/04 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
JS实现弹出居中的模式窗口示例
2016/06/20 Javascript
js 判断一组日期是否是连续的简单实例
2016/07/11 Javascript
Vue2.0 UI框架ElementUI使用方法详解
2017/04/14 Javascript
基于nodejs+express4.X实现文件下载的实例代码
2017/07/13 NodeJs
vue学习之mintui picker选择器实现省市二级联动示例
2017/10/12 Javascript
vue-cli axios请求方式及跨域处理问题
2018/03/28 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
layui-table表复选框勾选的所有行数据获取的例子
2019/09/13 Javascript
vue移动端使用canvas签名的实现
2020/01/15 Javascript
Python库urllib与urllib2主要区别分析
2014/07/13 Python
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
Python自定义装饰器原理与用法实例分析
2018/07/16 Python
python实现俄罗斯方块小游戏
2020/04/24 Python
Sephora丝芙兰菲律宾官方网站:购买化妆品和护肤品
2017/04/05 全球购物
高分子材料个人求职信范文
2013/09/25 职场文书
网上开商店的创业计划书
2014/01/19 职场文书
小学生开学感言
2014/02/28 职场文书
医药营销个人求职信
2014/04/12 职场文书
关于感恩老师的古诗句
2019/08/20 职场文书