基于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 相关文章推荐
JavaScript DOM学习第四章 getElementByTagNames
Feb 19 Javascript
简单时间提示DEMO从0开始一直进行计时
Nov 19 Javascript
jquery中子元素和后代元素的区别示例介绍
Apr 02 Javascript
jquery实现先淡出再折叠收起的动画效果
Aug 07 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
Nov 22 Javascript
es6学习笔记之Async函数基本教程
May 11 Javascript
vue 子组件向父组件传值方法
Feb 26 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
Jun 09 jQuery
jQuery实现基本淡入淡出效果的方法详解
Sep 05 jQuery
Jquery获取radio选中值实例总结
Jan 17 jQuery
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
Sep 25 Javascript
vue3不同环境下实现配置代理
May 25 Vue.js
微信小程序中实现手指缩放图片的示例代码
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
PHP使用json_encode函数时不转义中文的解决方法
2014/11/12 PHP
解决laravel 出现ajax请求419(unknown status)的问题
2019/09/03 PHP
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
Jquery 插件学习实例1 插件制作说明与tableUI优化
2010/04/02 Javascript
JS的反射问题
2010/04/07 Javascript
『jQuery』取指定url格式及分割函数应用
2013/04/22 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
jquery插件bxslider用法实例分析
2015/04/16 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
bootstrap table实现单击单元格可编辑功能
2017/03/28 Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
2017/04/19 Javascript
JS获取input[file]的值并显示在页面的实现方法
2018/03/09 Javascript
JavaScript 中的 this 工作原理
2018/06/20 Javascript
小程序实现多选框功能
2018/10/30 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
Vue之封装公用变量以及实现方式
2020/07/31 Javascript
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
[47:03]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第二场 12.10
2020/12/13 DOTA
介绍Python中几个常用的类方法
2015/04/08 Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
解决PyCharm中光标变粗的问题
2017/08/05 Python
Python 利用切片从列表中取出一部分使用的方法
2019/02/01 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
2019/08/26 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
浅析数据存储的三种方式 cookie sessionstorage localstorage 的异同
2020/06/04 HTML / CSS
工程造价专业大学生自荐信
2013/10/01 职场文书
初中政治教学反思
2014/01/17 职场文书
个人授权委托书格式
2014/08/30 职场文书
环卫个人总结
2015/03/03 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书
财产分割协议书
2016/03/22 职场文书
Golang: 内建容器的用法
2021/05/05 Golang