基于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中类或对象的定义说明
Mar 10 Javascript
js正则表达式验证邮件地址
Nov 12 Javascript
js获取鼠标位置实例详解
Dec 09 Javascript
JavaScrpt的面向对象全面解析
May 09 Javascript
jqgrid实现简单的单行编辑功能
Sep 30 Javascript
requireJS模块化实现返回顶部功能的方法详解
Oct 16 Javascript
Vue数据双向绑定原理及简单实现方法
May 18 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
Apr 01 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
Jun 04 Javascript
超简单的微信小程序轮播图
Nov 22 Javascript
详解Vue template 如何支持多个根结点
Feb 10 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
Feb 28 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
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
php5数字型字符串加解密代码
2008/04/24 PHP
php利用curl抓取新浪微博内容示例
2014/04/27 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
2015/05/12 PHP
WordPress迁移时一些常见问题的解决方法整理
2015/11/24 PHP
javascript 特殊字符串
2009/02/25 Javascript
IE DOM实现存在的部分问题及解决方法
2009/07/25 Javascript
js 编写规范
2010/03/03 Javascript
jqGrid增加时--判断开始日期与结束日期(实例解析)
2013/11/08 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
jquery.serialize() 函数语法及简单实例
2016/07/08 Javascript
javascript防篡改对象实例详解
2017/04/10 Javascript
AngularJS自定义指令实现面包屑功能完整实例
2017/05/17 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
2017/08/30 Javascript
Angular中支持SCSS的方法
2017/11/18 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
vue回到顶部监听滚动事件详解
2019/08/02 Javascript
python连接远程ftp服务器并列出目录下文件的方法
2015/04/01 Python
Python 实现引用其他.py文件中的类和类的方法
2018/04/29 Python
Python Matplotlib库安装与基本作图示例
2019/01/09 Python
linux查找当前python解释器的位置方法
2019/02/20 Python
Python实现代码统计工具
2019/09/19 Python
Python socket实现的文件下载器功能示例
2019/11/15 Python
完美解决pycharm 不显示代码提示问题
2020/06/02 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
2020/09/21 Python
python集合的新增元素方法整理
2020/12/07 Python
css3中的calc函数浅析
2018/07/10 HTML / CSS
英文自荐信格式
2013/11/28 职场文书
关爱留守儿童倡议书
2014/04/15 职场文书
爱护草坪标语
2014/06/24 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
springboot入门 之profile设置方式
2022/04/04 Java/Android