基于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 相关文章推荐
Js动态创建div
Sep 25 Javascript
jQuery 1.3 和 Validation 验证插件1.5.1
Jul 09 Javascript
url 特殊字符 传递参数解决方法
Jan 01 Javascript
简单实用的全选反选按钮例子
Oct 18 Javascript
谷歌浏览器调试JavaScript小技巧
Dec 29 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
Sep 20 Javascript
基于node.js express mvc轻量级框架实践
Sep 14 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
Oct 12 Javascript
学习jQuery中的noConflict()用法
Sep 28 jQuery
微信小程序 扭蛋抽奖机css3动画实现详解
Jul 19 Javascript
easyUI使用分页过滤器对数据进行分页操作实例分析
Jun 01 Javascript
JavaScript实现表单验证功能
Dec 09 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判断数组元素中是否存在某个字符串的方法
2014/06/14 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
php实现统计网站在线人数的方法
2015/05/12 PHP
PHP常用的小程序代码段
2015/11/14 PHP
php无限级分类实现方法分析
2016/10/19 PHP
PHP与Web页面交互操作实例分析
2020/06/02 PHP
动手学习无线电
2021/03/10 无线电
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
ASP中进行HTML数据及JS数据编码函数
2009/11/11 Javascript
event.X和event.clientX的区别分析
2011/10/06 Javascript
判断及设置浏览器全屏模式
2014/04/20 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
Spring mvc 接收json对象
2015/12/10 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
微信小程序实现左侧滑栏过程解析
2019/08/26 Javascript
[00:47]DOTA2荣耀之路6:玩不了啦!
2018/05/30 DOTA
使用python实现正则匹配检索远端FTP目录下的文件
2015/03/25 Python
在Python中利用Into包整洁地进行数据迁移的教程
2015/03/30 Python
Python 硬币兑换问题
2019/07/29 Python
Python 中pandas索引切片读取数据缺失数据处理问题
2019/10/09 Python
Python算法的时间复杂度和空间复杂度(实例解析)
2019/11/19 Python
Django使用rest_framework写出API
2020/05/21 Python
python3 简单实现组合设计模式
2020/07/02 Python
利用纯css3实现的文字亮光特效的代码演示
2014/11/27 HTML / CSS
浅谈cookie和localStorage那些事
2019/08/27 HTML / CSS
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
大学生简单自荐信
2013/11/10 职场文书
商务英语应届生自我鉴定
2013/12/08 职场文书
青年创业培训欢迎词
2014/01/10 职场文书
态度决定一切演讲稿
2014/05/20 职场文书
护士个人总结范文
2015/02/13 职场文书
《确定位置》教学反思
2016/02/18 职场文书
求职信如何撰写?
2019/05/22 职场文书
HTML+CSS+JS实现图片的瀑布流布局的示例代码
2021/04/22 HTML / CSS
详解Android中的TimePickerView(时间选择器)的用法
2022/04/30 Java/Android
Win11怎么解除儿童账号限制?Win11解除微软儿童账号限制方法
2022/07/07 数码科技