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 相关文章推荐
Jquery中getJSON在asp.net中的使用说明
Mar 10 Javascript
js获取某月的最后一天日期的简单实例
Jun 22 Javascript
window.location不跳转的问题解决方法
Apr 17 Javascript
JavaScript中split() 使用方法汇总
Apr 17 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
Jun 05 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
Feb 25 Javascript
AngularJS ng-bind-html 指令详解及实例代码
Jul 30 Javascript
jQuery中的siblings()是什么意思(推荐)
Dec 29 Javascript
解决VUEX兼容IE上的报错问题
Mar 01 Javascript
基于webpack4搭建的react项目框架的方法
Jun 30 Javascript
浅析Vue项目中使用keep-Alive步骤
Jul 27 Javascript
vue实现axios图片上传功能
Aug 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里的中文变量说明
2011/07/23 PHP
kohana框架上传文件验证规则写法示例
2014/07/14 PHP
laravel安装和配置教程
2014/10/29 PHP
php短址转换实现方法
2015/02/25 PHP
PHP自毁程序(慎用)
2015/07/09 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
laravel框架数据库配置及操作数据库示例
2019/10/10 PHP
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
jQuery基于图层模仿五星星评价功能的方法
2015/05/07 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
2015/09/10 Javascript
javascript中this指向详解
2016/04/23 Javascript
BootStrap Tooltip插件源码解析
2016/12/27 Javascript
利用JS如何计算字符串所占字节数示例代码
2017/09/13 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
深入理解nodejs搭建静态服务器(实现命令行)
2019/02/05 NodeJs
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
js实现炫酷光感效果
2020/09/05 Javascript
微信小程序实现登录注册功能
2020/12/29 Javascript
[38:23]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第一场
2014/05/24 DOTA
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
python的keyword模块用法实例分析
2015/06/30 Python
Python反射用法实例简析
2017/12/22 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
Python实现PS图像调整颜色梯度效果示例
2018/01/25 Python
解决Mac下使用python的坑
2019/08/13 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
蔻驰法国官网:COACH法国
2018/11/14 全球购物
同事吵架检讨书
2014/02/05 职场文书
篮球友谊赛通讯稿
2014/10/10 职场文书
防汛通知
2015/04/25 职场文书
党员干部廉洁自律承诺书
2015/04/28 职场文书
硕士论文致谢范文
2015/05/14 职场文书