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 function定义函数的几种不错方法
Feb 27 Javascript
jQuery实现仿腾讯迷你首页选项卡效果代码
Sep 17 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
Nov 18 Javascript
js date 格式化
Feb 15 Javascript
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
Feb 22 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
Jun 19 Javascript
jquery动态赋值id与动态取id方法示例
Aug 21 jQuery
使用vue-router完成简单导航功能【推荐】
Jun 28 Javascript
微信小程序使用npm支持踩坑
Nov 07 Javascript
JS使用cookie保存用户登录信息操作示例
May 30 Javascript
js事件触发操作实例分析
Jun 21 Javascript
JS变量提升及函数提升实例解析
Sep 03 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
MYSQL数据库初学者使用指南
2006/11/16 PHP
深入apache host的配置详解
2013/06/09 PHP
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
2014/07/22 PHP
thinkPHP框架中执行原生SQL语句的方法
2017/10/25 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
2016/04/17 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
2016/07/22 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
JavaScript瀑布流布局实现代码
2017/05/06 Javascript
vue 粒子特效的示例代码
2017/09/19 Javascript
vue中render函数的使用详解
2018/10/12 Javascript
详解Node.js中path模块的resolve()和join()方法的区别
2018/10/29 Javascript
前后端常见的几种鉴权方式(小结)
2019/08/04 Javascript
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
Python脚本文件打包成可执行文件的方法
2015/06/02 Python
python中ASCII码字符与int之间的转换方法
2018/07/09 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
windows环境中利用celery实现简单任务队列过程解析
2019/11/29 Python
解决os.path.isdir() 判断文件夹却返回false的问题
2019/11/29 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
2020/03/14 Python
如何在django中实现分页功能
2020/04/22 Python
零基础小白多久能学会python
2020/06/22 Python
python基于pygame实现飞机大作战小游戏
2020/11/19 Python
公司活动总结怎么写
2014/06/25 职场文书
学生实习证明模板汇总
2014/09/25 职场文书
原告代理词范文
2015/05/25 职场文书
领导激励员工的演讲稿,各种会上用得到,建议收藏
2019/08/13 职场文书
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL
Python中with上下文管理协议的作用及用法
2022/03/18 Python
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript