基于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 相关文章推荐
在html页面中包含共享页面的方法
Oct 24 Javascript
js与运算符和或运算符的妙用
Feb 14 Javascript
javascript中arguments,callee,caller详解
Mar 16 Javascript
JS中递归函数
Jun 17 Javascript
原生js实现类似fullpage的单页/全屏滚动
Jan 22 Javascript
BootStrap fileinput.js文件上传组件实例代码
Feb 20 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
Jul 07 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
Aug 24 jQuery
详解基于Angular4+ server render(服务端渲染)开发教程
Aug 28 Javascript
JS继承与闭包及JS实现继承的三种方式
Oct 15 Javascript
vue-cli开发时,关于ajax跨域的解决方法(推荐)
Feb 03 Javascript
在antd中setFieldsValue和defaultVal的用法
Oct 29 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获得文件扩展名三法
2006/11/25 PHP
php文件怎么打开 如何执行php文件
2011/12/21 PHP
有关PHP中MVC的开发经验分享
2012/05/17 PHP
php如何调用webservice应用介绍
2012/11/24 PHP
php中的Base62类(适用于数值转字符串)
2013/08/12 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
php中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
递归实现php数组转xml的代码分享
2015/05/14 PHP
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
PHP迭代器接口Iterator用法分析
2017/12/28 PHP
PHP实现的多进程控制demo示例
2019/07/22 PHP
laravel 实现根据字段不同值做不同查询
2019/10/23 PHP
JavaScript 密码强度判断代码
2009/09/05 Javascript
jquery动态增加删除表格行的小例子
2013/11/14 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
javascript实现获取服务器时间
2015/05/19 Javascript
基于jquery实现ajax无刷新评论
2020/08/19 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
JS实现向iframe中表单传值的方法
2017/03/24 Javascript
nodejs操作mongodb的填删改查模块的制作及引入实例
2018/01/02 NodeJs
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
[56:42]VP vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python编程使用selenium模拟登陆淘宝实例代码
2018/01/25 Python
python spyder中读取txt为图片的方法
2018/04/27 Python
python之拟合的实现
2019/07/19 Python
老板电器官方购物商城:老板油烟机、燃气灶、消毒柜、电烤箱
2018/05/30 全球购物
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
小学运动会口号
2014/06/07 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
2014教师年度工作总结
2014/11/10 职场文书
Python实现抖音热搜定时爬取功能
2022/03/16 Python
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫
部分武汉产收音机展览
2022/04/07 无线电
生命的关键成分来自太空?陨石说是的
2022/04/29 数码科技
Spring中bean集合注入的方法详解
2022/07/07 Java/Android