基于vue.js实现的分页


Posted in Javascript onMarch 13, 2018

本文主要介绍基于vue的分页原生写法。

先po上效果图:

基于vue.js实现的分页

html部分,将page作为一个单独的组件

<script type="text/x-template" id="page">
  <ul class="pagination">
   <li v-show="current != 1" @click="current-- && goto(current)">
    <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >上一页</a>
   </li>
   <li v-for="index in pages" @click="goto(index)" :class="{'active':current == index}" :key="index">
    <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >{{index}}</a>
   </li>
   <li v-show="allpage != current && allpage != 0 " @click="current++ && goto(current++)">
    <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >下一页</a>
   </li>
  </ul>
 </script>
 <div id="app">
  <page></page>
 </div>

js部分:

<script>
  Vue.component("page", {
   template: "#page",
   data: function () {
    return {
     current: 1, // 当前页码
     showItem: 5, // 最少显示5个页码
     allpage: 13 // 总共的
    }
   },
   computed: {
    pages: function () {
     var pag = [];
     if (this.current < this.showItem) { //如果当前的激活的项 小于要显示的条数
      //总页数和要显示的条数那个大就显示多少条
      var i = Math.min(this.showItem, this.allpage);
      while (i) {
       pag.unshift(i--);
      }
     } else { //当前页数大于显示页数了
      var middle = this.current - Math.floor(this.showItem / 2), //从哪里开始
       i = this.showItem;
      if (middle > (this.allpage - this.showItem)) {
       middle = (this.allpage - this.showItem) + 1
      }
      while (i--) {
       pag.push(middle++);
      }
     }
     return pag
    }
   },
   methods: {
    goto: function (index) {
     if (index == this.current) return;
     this.current = index;
     //这里可以发送ajax请求
    }
   }
  })
  var vm = new Vue({
   el: '#app',
  })
 </script>

css部分:

body {
   font-family: "Segoe UI";
  }
  li {
   list-style: none;
  }
  a {
   text-decoration: none;
  }
  .pagination {
   position: relative;
  }
  .pagination li {
   display: inline-block;
   margin: 0 5px;
  }
  .pagination li a {
   padding: .5rem 1rem;
   display: inline-block;
   border: 1px solid #ddd;
   background: #fff;
   color: #0E90D2;
  }
  .pagination li a:hover {
   background: #eee;
  }
  .pagination li.active a {
   background: #0E90D2;
   color: #fff;
  }

最后附上github地址:https://github.com/AmberWuWu/vue-page

总结

以上所述是小编给大家介绍的基于vue.js实现的分页,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js鼠标滑过弹出层的定位IE6bug解决办法
Dec 26 Javascript
js Map List 遍历使用示例
Jul 10 Javascript
jquery对象和DOM对象的区别介绍
Aug 09 Javascript
javascript如何操作HTML下拉列表标签
Aug 20 Javascript
实现高性能JavaScript之执行与加载
Jan 30 Javascript
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
Oct 28 Javascript
JavaScript实现三级级联特效
Nov 05 Javascript
bootstrap datetimepicker控件位置异常的解决方法
Nov 23 Javascript
微信小程序自定义select下拉选项框组件的实现代码
Aug 28 Javascript
如何实现一个webpack模块解析器
Oct 24 Javascript
node实现简单的增删改查接口实例代码
Aug 22 Javascript
微信小程序事件流原理解析
Nov 27 Javascript
微信小程序中实现手指缩放图片的示例代码
Mar 13 #Javascript
基于vue中css预加载使用sass的配置方式详解
Mar 13 #Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
Mar 13 #Javascript
vue加载自定义的js文件方法
Mar 13 #Javascript
vue轮播图插件vue-concise-slider的使用
Mar 13 #Javascript
vue页面离开后执行函数的实例
Mar 13 #Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
Mar 13 #Javascript
You might like
天使彦史上最神还原,性别曝光的那一刻,百万网友恋爱了
2020/03/02 国漫
php escape URL编码
2008/12/10 PHP
基于php常用正则表达式的整理汇总
2013/06/08 PHP
memcache一致性hash的php实现方法
2015/03/05 PHP
全面了解PHP中的全局变量
2016/06/17 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
2016/11/05 PHP
ThinkPHP简单使用memcache缓存的方法
2016/11/15 PHP
PHP使用curl函数发送Post请求的注意事项
2016/11/26 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
JavaScript中URL编码函数代码
2011/01/11 Javascript
JavaScript通过prototype给对象定义属性用法实例
2015/03/23 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
用vue-cli开发vue时的代理设置方法
2018/09/20 Javascript
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
Windows8下安装Python的BeautifulSoup
2015/01/22 Python
Python使用Scrapy爬取妹子图
2015/05/28 Python
Python正则表达式教程之二:捕获篇
2017/03/02 Python
python自带tkinter库实现棋盘覆盖图形界面
2019/07/17 Python
Python3的unicode编码转换成中文的问题及解决方案
2019/12/10 Python
用 Python 制作地球仪的方法
2020/04/24 Python
css3 media 响应式布局的简单实例
2016/08/03 HTML / CSS
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
公益活动策划方案
2014/01/09 职场文书
小学运动会报道稿
2014/10/04 职场文书
2014年语文教研组工作总结
2014/12/06 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
电影焦裕禄观后感
2015/06/09 职场文书
2017大学生寒假社会实践心得体会
2016/01/14 职场文书
个人向公司借款协议书
2016/03/19 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书
温馨祝福晨语:美丽的一天从我的问候开始
2019/11/28 职场文书
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS