基于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 textContent与innerText的异同分析
Oct 22 Javascript
jQuery ReferenceError: $ is not defined 错误的处理办法
May 10 Javascript
DIV始终居中的js代码
Feb 17 Javascript
node.js中的fs.writeSync方法使用说明
Dec 15 Javascript
实现placeholder效果的方案汇总
Jun 11 Javascript
JS日期加减,日期运算代码
Nov 05 Javascript
jquery插件uploadify实现带进度条的文件批量上传
Dec 13 Javascript
bootstrap table复杂操作代码
Nov 01 Javascript
基于JavaScript定位当前的地理位置
Apr 11 Javascript
在vue.js中抽出公共代码的方法示例
Jun 08 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
Jan 15 Javascript
区别JavaScript函数声明与变量声明
Sep 12 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/10/09 PHP
php实现微信公众平台账号自定义菜单类
2014/12/02 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
php实现的SSO单点登录系统接入功能示例分析
2016/10/12 PHP
Alliance vs AM BO3 第一场2.13
2021/03/10 DOTA
精解window.setTimeout()&amp;window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
javascript getElementsByName()的用法说明
2009/07/31 Javascript
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
node.js中的forEach()是同步还是异步呢
2015/01/29 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
微信小程序封装自定义弹窗的实现代码
2019/05/08 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
2019/12/06 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
vue实现简易的双向数据绑定
2020/12/29 Vue.js
vue+vant 上传图片需要注意的地方
2021/01/03 Vue.js
Python中使用PyHook监听鼠标和键盘事件实例
2014/07/18 Python
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
python使用clear方法清除字典内全部数据实例
2015/07/11 Python
Python实现读取文件最后n行的方法
2017/02/23 Python
使用pyecharts在jupyter notebook上绘图
2020/04/23 Python
Python Django Cookie 简单用法解析
2019/08/13 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
2019/10/28 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
python的launcher用法知识点总结
2020/08/07 Python
艺龙旅行网酒店预订:国内、港澳台酒店
2018/06/26 全球购物
会计与出纳自荐书范文
2014/03/16 职场文书
《从现在开始》教学反思
2014/04/15 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
扬州个园导游词
2015/02/06 职场文书
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
2021/05/25 Python