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 bind 函数 使用闭包保存执行上下文
Dec 26 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
Mar 16 Javascript
Eclipse去除js(JavaScript)验证错误
Feb 11 Javascript
jquery实现类似淘宝星星评分功能有截图
Sep 15 Javascript
JQuery中serialize() 序列化
Mar 13 Javascript
javascript先序遍历DOM树的方法
Feb 27 Javascript
JavaScript注入漏洞的原理及防范(详解)
Dec 04 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
Dec 25 Javascript
js实现漫天星星效果
Jan 19 Javascript
微信小程序中使用echarts的实现方法
Apr 24 Javascript
详解jQuery中的prop()使用方法
Jan 05 jQuery
在Uni中使用Vue的EventBus总线机制操作
Jul 31 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 zlib压缩和解压缩swf文件的代码
2008/12/30 PHP
php中用数组的方法设置cookies
2011/04/21 PHP
变量在 PHP7 内部的实现(二)
2015/12/21 PHP
PHP中类的自动加载的方法
2017/03/17 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
php中file_get_contents()函数用法实例
2019/02/21 PHP
PHP的静态方法与普通方法用法实例分析
2019/09/26 PHP
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
php上传图片并给图片打上透明水印的代码
2010/06/07 Javascript
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
js showModalDialog弹出窗口实例详解
2014/01/07 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
js 操作符汇总
2014/11/08 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
BootStrap智能表单demo示例详解
2016/06/13 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
json定义及jquery操作json的方法
2016/09/29 Javascript
axios向后台传递数组作为参数的方法
2018/08/11 Javascript
Angular事件之不同组件间传递数据的方法
2018/11/15 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
vue项目中引入Sass实例方法
2019/08/27 Javascript
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
python爬虫使用cookie登录详解
2017/12/27 Python
Python socket套接字实现C/S模式远程命令执行功能案例
2018/07/06 Python
Tensorflow使用支持向量机拟合线性回归
2018/09/07 Python
基于python图像处理API的使用示例
2020/04/03 Python
python二维图制作的实例代码
2020/12/03 Python
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
一家专门经营包包的英国网站:MyBag
2019/09/08 全球购物
测量实习生自我鉴定
2013/09/19 职场文书
婚礼答谢礼品
2015/01/20 职场文书
怒海潜将观后感
2015/06/11 职场文书
canvas绘制折线路径动画实现
2021/05/12 Javascript
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js