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 相关文章推荐
javascript function、指针及内置对象
Feb 19 Javascript
jquery 的 $(&quot;#id&quot;).html() 无内容的解决方法
Jun 07 Javascript
Javascript自定义排序 node运行 实例
Jun 05 Javascript
Javascript中3种实现继承的方法和代码实例
Aug 12 Javascript
两行代码轻松搞定JavaScript日期验证
Aug 03 Javascript
JS框架之vue.js(深入三:组件1)
Sep 29 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
Jan 04 Javascript
详解vue.js之绑定class和style的示例代码
Aug 24 Javascript
Vue实现textarea固定输入行数与添加下划线样式的思路详解
Jun 28 Javascript
Vue+Node实现的商城用户管理功能示例
Dec 23 Javascript
基于小程序请求接口wx.request封装的类axios请求
Jul 02 Javascript
javascript实现支付宝滑块验证码效果
Jul 24 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初学者的8点有效建议
2010/11/20 PHP
PHP函数实现分页含文本分页和数字分页
2014/10/23 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
Javascript继承机制的设计思想分享
2011/08/28 Javascript
Javascript面向对象编程(二) 构造函数的继承
2011/08/28 Javascript
字段太多jquey快速清空表单内容方法
2014/08/21 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
[js高手之路]单例模式实现模态框的示例
2017/09/01 Javascript
jquery实现倒计时小应用
2017/09/19 jQuery
JS实现的简单标签点击切换功能示例
2017/09/21 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
在NPM发布自己造的轮子的方法步骤
2019/03/09 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
用Nodejs实现在终端中炒股的实现
2020/10/18 NodeJs
element-ui中el-upload多文件一次性上传的实现
2020/12/02 Javascript
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
详解Python的Django框架中的中间件
2015/07/24 Python
在Python中执行系统命令的方法示例详解
2017/09/14 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
2020/03/10 Python
Pycharm中切换pytorch的环境和配置的教程详解
2020/03/13 Python
Python xlwt模块使用代码实例
2020/06/10 Python
HTML5引入的新数组TypedArray介绍
2012/12/24 HTML / CSS
英国足球店:UK Soccer Shop
2017/11/19 全球购物
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
匡威西班牙官网:Converse西班牙
2019/10/01 全球购物
英国排名第一的餐具品牌:Denby Pottery
2019/11/01 全球购物
《乡愁》教学反思
2014/02/18 职场文书
2015年度个人思想工作总结
2015/04/08 职场文书
篮球比赛通讯稿
2015/07/18 职场文书
利用Python网络爬虫爬取各大音乐评论的代码
2021/04/13 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python
Android Flutter实现3D动画效果示例详解
2022/04/07 Java/Android
Java 关于String字符串原理上的问题
2022/04/07 Java/Android
Spring Cloud OAuth2实现自定义token返回格式
2022/06/25 Java/Android