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
Feb 25 Javascript
jQuery数组处理方法汇总
Jun 20 Javascript
javascript实现将文件保存到本地方法汇总
Jul 26 Javascript
静态页面html中跳转传值的JS处理技巧
Jun 22 Javascript
用AngularJS的指令实现tabs切换效果
Aug 31 Javascript
vue项目优化之通过keep-alive数据缓存的方法
Dec 11 Javascript
微信小程序实现自定义加载图标功能
Jul 19 Javascript
JavaScript解析及序列化JSON的方法实例分析
Jan 04 Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
Mar 28 Javascript
详解Vue demo实现商品列表的展示
May 07 Javascript
小程序接口的promise化的实现方法
Dec 11 Javascript
探索node之事件循环的实现
Oct 30 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
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
JavaScript去掉空格的方法集合
2010/12/28 Javascript
JSDoc 介绍使用规范JsDoc的使用介绍
2011/02/12 Javascript
jquery获取checkbox的值并post提交
2015/01/14 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
使用Promise解决多层异步调用的简单学习心得
2016/05/17 Javascript
jQuery弹出层插件popShow(改进版)用法示例
2017/01/23 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
vue父子模板传值问题解决方法案例分析
2020/02/26 Javascript
vue 使用rules对表单字段进行校验的步骤
2020/12/25 Vue.js
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
python实现斐波那契递归函数的方法
2014/09/08 Python
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
Django视图之ORM数据库查询操作API的实例
2017/10/27 Python
Python内置函数—vars的具体使用方法
2017/12/04 Python
Python对象转换为json的方法步骤
2019/04/25 Python
python项目对接钉钉SDK的实现
2019/07/15 Python
django的聚合函数和aggregate、annotate方法使用详解
2019/07/23 Python
Python(PyS60)实现简单语音整点报时
2019/11/18 Python
python标准库OS模块详解
2020/03/10 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
基于HTML5 Canvas的3D动态Chart图表的示例
2017/11/02 HTML / CSS
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
广州品高软件.net笔面试题目
2012/04/18 面试题
项目副经理岗位职责
2013/12/30 职场文书
市场开发与营销专业求职信
2013/12/31 职场文书
药学专业个人的自我评价
2013/12/31 职场文书
母亲追悼会答谢词
2014/01/27 职场文书
80后职场人的职业生涯规划
2014/03/08 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
招商银行收入证明
2015/06/17 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书
java获取一个文本文件的编码(格式)信息
2022/09/23 Java/Android