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 相关文章推荐
XHTML-Strict 内允许出现的标签
Dec 11 Javascript
学习JavaScript的最佳方法分享
Oct 21 Javascript
document.documentElement的一些使用技巧
Apr 18 Javascript
jQuery焦点图切换简易插件制作过程全纪录
Aug 27 Javascript
jQuery分组选择器用法实例
Dec 23 Javascript
使用命令对象代替switch语句的写法示例
Feb 28 Javascript
JavaScript中利用Array和Object实现Map的方法
Jul 27 Javascript
全面解析JS字符串和正则表达式中的match、replace、exec等函数
Jul 01 Javascript
避免jQuery名字冲突 noConflict()方法
Jul 30 Javascript
Html5 js实现手风琴效果
Apr 17 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
Dec 24 Javascript
基于JavaScript实现大文件上传后端代码实例
Aug 18 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实现可以设置中奖概率的抽奖程序代码分享
2014/01/19 PHP
Laravel 连接(Join)示例
2019/10/16 PHP
ExtJs之带图片的下拉列表框插件
2010/03/04 Javascript
验证javascript中Object和Function的关系的三段简单代码
2010/06/27 Javascript
jQuery 删除/替换DOM元素的几种方式
2014/05/20 Javascript
超级简单的jquery操作表格方法
2014/12/15 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
详解Bootstrap的aria-label和aria-labelledby应用
2016/01/04 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
2016/06/17 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
Node4-5静态资源服务器实战以及优化压缩文件实例内容
2019/08/29 Javascript
Vue通过配置WebSocket并实现群聊功能
2019/12/31 Javascript
基于vue的video播放器的实现示例
2021/02/19 Vue.js
[02:45]DOTA2英雄敌法师基础教程
2013/11/25 DOTA
[47:22]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[40:05]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python k-近邻算法实例分享
2014/06/11 Python
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
python逆序打印各位数字的方法
2018/06/25 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
python实现取余操作的简单实例
2020/08/16 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
巴西最大的玩具连锁店:Ri Happy
2020/06/17 全球购物
大学生自荐书范文
2013/12/10 职场文书
大学生创业计划书的范文
2014/01/07 职场文书
运动会广播稿150字
2014/02/19 职场文书
2015年勤工助学工作总结
2015/04/29 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
python面向对象版学生信息管理系统
2021/06/24 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
2022/07/07 Python