Vue实现web分页组件详解


Posted in Javascript onNovember 28, 2017

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

效果演示

Vue实现web分页组件详解

源代码

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>测试分页 - www.maoyupeng.com</title>
 <style type="text/css">
  body{padding:0; margin: 0; broder:none; } #app {width: 500px; height: 200px; margin: 0 auto; text-align: center; background-color: #cccccc; } #mylink {color: #efefef; } .pagination{list-style: none; text-align: center; height: 50px; padding-top: 50px; } .pagination > li {float: left; margin: 0 5px; } [v-cloak] {display: none; } </style>
</head>
<body>
 <div id="app" v-cloak>
  <ul class="pagination">
   <li>
    <a v-if="currentPage == 1" >首页</a>
    <a v-else href="javascript:;" @click="next(1)">首页</a>
   </li>
   <li v-if="currentPage<=1"><a>上一页</a></li>
   <li v-else><a href="javascript:;" @click="next(currentPage-1)">上一页</a></li>


   <li v-for="item in pagingList">
    <a v-if="currentPage==item.key || sign ==item.key" >{{item.key}}</a>
    <a v-else href="javascript:;" @click="next(item.value)">{{item.key}}</a>
   </li>

   <li v-if="currentPage>=totalPageCount"><a>下一页</a></li>
   <li v-else><a href="javascript:;" @click="next(currentPage+1)">下一页</a></li>
   <li>
    <a v-if="totalPageCount == currentPage">尾页</a>
    <a v-else href="javascript:;" @click="next(totalPageCount)">尾页</a>
   </li>
  </ul>
  <p>共:{{totalPageCount||0}}页,当前页为第{{currentPage||0}}页   设置总页数:<input style="width:20px;" v-model="totalPageCount"></p>
  <a href="http://www.maoyupeng.com/web-pagination-component-for-vue.html" target="_blank" id="mylink">http://www.maoyupeng.com 带注解版本</a>
 </div>

 <script src="https://unpkg.com/vue/dist/vue.js"></script>
 <script type="text/javascript">
  var app = new Vue({
   el: '#app',
   data: {
   // 省略的符号
   sign:'...',
   // 省略号位置
   signIndex:4,
   // 总页数
   totalPageCount: 4,
   // 当前页
   currentPage:1,
   // 显示在页面的数组列表
   pagingList:[]
   },
   watch: {
   totalPageCount (val) {
    var that = this
    if (!val || val == '') return;
    that.currentPage = 1;
    that.init()
   },
   currentPage (val) {
    var that = this
    that.init()
   }
   },
   methods: {
   // 跳转到某页码
   next (num) {
    var that = this
    if (num <= 1) that.currentPage = 1;
    else if (num >= that.totalPageCount) that.currentPage = that.totalPageCount;
    else that.currentPage = num;
   },
   // 初始化数据
   fetchData () {
    var that = this

    that.pagingList = [];
    var tmp = null;


    if ((that.totalPageCount) > 6) {
     if (((that.totalPageCount-1) == (that.totalPageCount - that.currentPage)) && (that.totalPageCount - that.currentPage) > 5) {
      for (var i=1;i<7;i++) {
       if (i < that.signIndex) {
        tmp = {key:i, value:i }
       } else if (i== that.signIndex) {
        tmp = {key:that.sign, value:0 }
       } else if (i == (that.signIndex + 1) ) {
        tmp = {key:that.totalPageCount - 1, value:that.totalPageCount - 1 }
       } else {
        tmp = {key:that.totalPageCount, value:that.totalPageCount }
       }
       that.pagingList.push(tmp)
      }
     } else if (((that.totalPageCount - that.currentPage) <= that.signIndex)){
      var starNum = that.totalPageCount - 5;
      for (var i=starNum;i<starNum+6;i++) {
       tmp = {key:i, value:i }
       that.pagingList.push(tmp)
      }
     } else {
      var starNum = that.currentPage - 1;
      for (var i=1;i<7;i++) {
       if (i < that.signIndex) {
        tmp = {key:(starNum - 1) + i, value:(starNum - 1) + i }
       } else if (i== that.signIndex) {
        tmp = {key:that.sign, value:0 }
       } else if (i == (that.signIndex + 1) ) {
        tmp = {key:that.totalPageCount - 1, value:that.totalPageCount - 1 }
       } else {
        tmp = {key:that.totalPageCount, value:that.totalPageCount }
       }
       that.pagingList.push(tmp)
      }
     }
    } else {
     for (var i =0; i <that.totalPageCount; i++) {
      tmp = {key:i+1, value:i+1 }
      that.pagingList.push(tmp)
     }
    }
   },
   init () {
    var that = this

    that.fetchData()
   }
   },
   mounted () {
   var that = this

   that.init()
   }
  }) 
 </script>
</body>
</html>

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

Javascript 相关文章推荐
js通过更改按钮的显示样式实现按钮的滑动效果
Apr 23 Javascript
js 判断图片是否加载完以及实现图片的预下载
Aug 14 Javascript
javascript获取文档坐标和视口坐标
May 26 Javascript
jquery ajax分页插件的简单实现
Jan 27 Javascript
js利用正则表达式检验输入内容是否为网址
Jul 05 Javascript
JS实现的适合做faq或menu滑动效果示例
Nov 17 Javascript
微信小程序实战之自定义toast(6)
Apr 18 Javascript
JS简单获得节点元素的方法示例
Feb 10 Javascript
vue项目引入ts步骤(小结)
Oct 31 Javascript
js实现无限层级树形数据结构(创新算法)
Feb 27 Javascript
React + Threejs + Swiper 实现全景图效果的完整代码
Jun 28 Javascript
关于JavaScript轮播图的实现
Nov 20 Javascript
基于vue2实现左滑删除功能
Nov 28 #Javascript
JavaScript生成简单等差数列
Nov 28 #Javascript
微信小程序用户自定义模版用法实例分析
Nov 28 #Javascript
vue2手机APP项目添加开屏广告或者闪屏广告
Nov 28 #Javascript
浅谈vue中慎用style的scoped属性
Nov 28 #Javascript
元素全屏的设置与监听实例
Nov 28 #Javascript
vue2实现数据请求显示loading图
Nov 28 #Javascript
You might like
批量去除PHP文件中bom的PHP代码
2012/03/13 PHP
使用php测试硬盘写入速度示例
2014/01/27 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
2015/06/20 PHP
10个对初学者非常有用的PHP技巧
2016/04/06 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
JavaScript 轻松搞定快捷留言功能 只需一行代码
2010/04/01 Javascript
Javascript 面向对象编程(coolshell)
2012/03/18 Javascript
Javascript继承(上)——对象构建介绍
2012/11/08 Javascript
易操作的jQuery表单提示插件
2015/12/01 Javascript
React组件的三种写法总结
2017/01/12 Javascript
JS实现中文汉字按拼音排序的方法
2017/10/09 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
vant 中van-list的用法说明
2020/11/11 Javascript
Python读写Excel文件方法介绍
2014/11/22 Python
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
Python文件操作基本流程代码实例
2017/12/11 Python
解决Ubuntu pip 安装 mysql-python包出错的问题
2018/06/11 Python
Python实现的微信好友数据分析功能示例
2018/06/21 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
Python3 串口接收与发送16进制数据包的实例
2019/06/12 Python
python 实现在tkinter中动态显示label图片的方法
2019/06/13 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
Pycharm中配置远程Docker运行环境的教程图解
2020/06/11 Python
使用canvas对多图片拼合并导出图片的方法
2018/08/28 HTML / CSS
英国床垫和床架购物网站:Bedman
2019/11/04 全球购物
JD Sports西班牙:英国领先的运动服装公司
2020/01/06 全球购物
先进事迹报告会主持词
2014/04/02 职场文书
升旗仪式演讲稿
2014/05/08 职场文书
2015年大学元旦晚会活动策划书
2014/12/09 职场文书
2014年优秀班主任工作总结
2014/12/16 职场文书
2015年八一建军节活动总结
2015/03/20 职场文书
学校运动会感想
2015/08/10 职场文书
优秀学生干部主要事迹材料
2015/11/04 职场文书
2016领导干部廉洁从政心得体会
2016/01/19 职场文书