基于Vue2.0的分页组件


Posted in Javascript onMarch 16, 2017

本文实例为大家分享了Vue2.0分页组件的具体实现代码,供大家参考,具体内容如下

整个示例打包了,有需要的可以下载,有不对的地方欢迎指出:vue分页组件

基于Vue2.0的分页组件

组件部分代码:

Vue.component('zpagenav', { 
 template: `<nav class="zpagenav">` + 
     `<ul class="page-ul">` + 
      `<li v-bind:key="index" v-for="(item,index) in pageList" v-bind:class ="item.class" @click.stop="setPage(item)" v-html="item.html">` + 
      `</li>` + 
     `</ul>` + 
     `<span class="total">共 {{total}} 条</span>` + 
    `</nav>`, 
 props: { 
  prevHtml: String, 
  nextHtml: String, 
  page: Number, 
  total: Number, 
  pageSize: Number, 
  maxPage: Number 
 }, 
 computed: { 
  pageList: function () { 
   var _this = this, pageList = []; 
   let pageCount = Math.ceil(_this.total / _this.pageSize); 
   let page = _this.page; 
   let prevHtml = _this.prevHtml ? _this.prevHtml : '<'; 
   let nextHtml = _this.nextHtml ? _this.nextHtml : '>'; 
   let maxPage = _this.maxPage ? _this.maxPage : 9; 
 
   let hasPrev = page > 1; 
   let hasNext = page < pageCount; 
 
   //上一页 
   pageList.push({ 
    class: hasPrev ? '' : 'disabled', 
    page: hasPrev ? page - 1 : page, 
    html: prevHtml 
   }); 
 
   //首页 
   pageList.push({ 
    class: page == 1 ? 'active' : '', 
    page: 1, 
    html: 1 
   }); 
 
   var p0 = Math.floor(maxPage / 2); 
   var p1 = 1 + 2 + p0; //首页+省略至少2个页码+中间页面数的一半 
 
   var start, end; 
   if (page >= p1) { 
    start = page - p0; 
    //前置省略号 
    pageList.push({ 
     class: 'dot', 
     page: page, 
     html: '...' 
    }); 
   } else { 
    start = 2; 
   } 
 
   var p2 = page + p0; 
   if (p2 < pageCount) { 
    end = p2; 
   } else { 
    end = pageCount - 1; 
   } 
 
 
   //页码列表 
   for (let i = start; i <= end; i++) { 
    pageList.push({ 
     class: page == i ? 'active' : '', 
     page: i, 
     html: i 
    }); 
   } 
 
 
   if (end < pageCount - 1) { 
    //后置省略号 
    pageList.push({ 
     class: 'dot', 
     page: page, 
     html: '...' 
    }); 
   } 
 
 
   //尾页 
   if (pageCount > 1) { 
    pageList.push({ 
     class: page == pageCount ? 'active' : '', 
     page: pageCount, 
     html: pageCount 
    }); 
   } 
 
   //下一页 
   pageList.push({ 
    class: hasNext ? '' : 'disabled', 
    page: hasNext ? page + 1 : page, 
    html: nextHtml 
   }); 
 
   return pageList; 
  } 
 }, 
 methods: { 
  setPage: function (item) { 
   if (item.class == '') { 
    this.$emit('pagehandler', item.page); 
   } 
  } 
 } 
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用javascript编写的第一人称射击游戏
Feb 25 Javascript
jQuery插件-jRating评分插件源码分析及使用方法
Dec 28 Javascript
JQuery中使用on方法绑定hover事件实例
Dec 09 Javascript
原生js实现数字字母混合验证码的简单实例
Dec 10 Javascript
JavaScript表单验证开发
Nov 23 Javascript
jquery uploadify隐藏上传进度的实现方法
Feb 06 Javascript
socket.io学习教程之基础介绍(一)
Apr 29 Javascript
ES6学习之变量的两种命名方法示例
Jul 18 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
Jan 23 Javascript
浅谈JavaScript闭包
Apr 09 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
Aug 26 Javascript
基于react项目打包css引用路径错误解决方案
Oct 28 Javascript
原生js实现验证码功能
Mar 16 #Javascript
基于vue实现多引擎搜索及关键字提示
Mar 16 #Javascript
vue图片加载与显示默认图片实例代码
Mar 16 #Javascript
js中作用域的实例解析
Mar 16 #Javascript
Vue.2.0.5过渡效果使用技巧
Mar 16 #Javascript
JS实现页面打印功能
Mar 16 #Javascript
Vue中添加过渡效果的方法
Mar 16 #Javascript
You might like
php不写闭合标签的好处
2014/03/04 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
你可能不知道的JavaScript的new Function()方法
2014/04/17 Javascript
javascript实现根据身份证号读取相关信息
2014/12/17 Javascript
简介JavaScript中的push()方法的使用
2015/06/09 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
javascript新闻跑马灯实例代码
2020/07/29 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
浅析JavaScript Array和string的转换(推荐)
2016/05/20 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
NodeJS自定义模块写法(详解)
2017/06/27 NodeJs
vue-cli 自定义指令directive 添加验证滑块示例
2017/10/19 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
[15:09]DOTA2国际邀请赛采访专栏:Loda
2013/08/06 DOTA
[01:07:21]NAVI vs VG Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
python实现巡检系统(solaris)示例
2014/04/02 Python
浅谈python内置变量-reversed(seq)
2017/06/21 Python
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
python logging模块书写日志以及日志分割详解
2019/07/22 Python
Python3 利用face_recognition实现人脸识别的方法
2020/03/13 Python
Pandas缺失值2种处理方式代码实例
2020/06/13 Python
增大python字体的方法步骤
2020/07/05 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
Python生成pdf目录书签的实例方法
2020/10/29 Python
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
运动会广播稿300字
2014/01/10 职场文书
违反课堂纪律检讨书
2014/01/19 职场文书
python中的random模块和相关函数详解
2022/04/22 Python