http://www.php361.com/index.php?c=index&a=view&id=4671

http://www.yanglajiao.com/article/sinat_36422236/79474987

最近使用vue2.0重构项目, 需要实现一个分页的表格, 没有找到合适的分页组件, 就自己写了一个, 效果如下:

该项目是使用 vue-cli搭建的, 如果你的项目中没有使用webpack,请根据代码自己调整:

首先新建pagination.vue文件, 所有组件的代码都写在这里, 写这样的组件并没有什么太大的难度, 主要是解决父子组件之间值传递的问题

[源码] view plain

  1. <template>
  2. <nav>
  3. <ul class="pagination">
  4. <li :class="{'disabled': current == 1}"><a href="javascript:;" @click="setCurrent(current - 1)"> « </a></li>
  5. <li :class="{'disabled': current == 1}"><a href="javascript:;" @click="setCurrent(1)"> 首页 </a></li>
  6. <li v-for="p in grouplist" :class="{'active': current == p.val}"><a href="javascript:;"
  7. @click="setCurrent(p.val)"> {{ p.text }} </a>
  8. </li>
  9. <li :class="{'disabled': current == page}"><a href="javascript:;" @click="setCurrent(page)"> 尾页 </a></li>
  10. <li :class="{'disabled': current == page}"><a href="javascript:;" @click="setCurrent(current + 1)"> »</a></li>
  11. </ul>
  12. </nav>
  13. </template>
  14. <script type="es6">
  15. export default{
  16. data(){
  17. return {
  18. current: this.currentPage
  19. }
  20. },
  21. props: {
  22. total: {// 数据总条数
  23. type: Number,
  24. default: 0
  25. },
  26. display: {// 每页显示条数
  27. type: Number,
  28. default: 10
  29. },
  30. currentPage: {// 当前页码
  31. type: Number,
  32. default: 1
  33. },
  34. pagegroup: {// 分页条数
  35. type: Number,
  36. default: 5,
  37. coerce: function (v) {
  38. v = v > 0 "less">
  39. .pagination {
  40. overflow: hidden;
  41. display: table;
  42. margin: 0 auto;
  43. /*width: 100%;*/
  44. height: 50px;
  45. li {
  46. float: left;
  47. height: 30px;
  48. border-radius: 5px;
  49. margin: 3px;
  50. color: #666;
  51. &
  52. :hover {
  53. background: #000;
  54. a {
  55. color: #fff;
  56. }
  57. }
  58. a {
  59. display: block;
  60. width: 30px;
  61. height: 30px;
  62. text-align: center;
  63. line-height: 30px;
  64. font-size: 12px;
  65. border-radius: 5px;
  66. text-decoration: none
  67. }
  68. }
  69. .active {
  70. background: #000;
  71. a {
  72. color: #fff;
  73. }
  74. }
  75. }
  76. </style>

使用时, 在父组件中引入, 代码如下:

[源码] view plain

  1. <template>
  2. <v-pagination :total="total" :current-page='current' @pagechange="pagechange"></v-pagination>
  3. </template>
  4. <script type="es6">
  5. import pagination from '@/components/common/pagination/pagination'
  6. export default{
  7. data(){
  8. return {
  9. total: 150,     // 记录总条数
  10. display: 10,   // 每页显示条数
  11. current: 1,   // 当前的页数
  12. },
  13. methods: {
  14. pagechange:function(currentPage){
  15. console.log(currentPage);
  16. // ajax请求, 向后台发送 currentPage, 来获取对应的数据
  17. }
  18. },
  19. components: {
  20. 'v-pagination': pagination,
  21. }
  22. }
  23. </script>

至此, 一个基于 vue2.0 的分页组件就完成了

...

1.模板 pagination.vue

<template><div class="pagination"><el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="currentPage":page-sizes="[5, 10, 15, 30]":page-size="pageSize"layout="total, sizes, prev, pager, next, jumper":total="total"></el-pagination></div>
</template>
<script type="text/ecmascript-6">
let pageNum = 1;export default {props: {total: {type: Number,default: 0},currentPage: {type: Number,default: 1}},data() {return {pageSize: 10};},methods: {handleSizeChange(val) {this.pageSize = val;this.$emit('search', 1, this.pageSize);},handleCurrentChange(val) {pageNum = val;this.$emit('search', pageNum, this.pageSize);}}};
</script>

2.在父组件中引用,注册

<pagination @search="search" :total="total" :currentPage = "curPage"></pagination><script>import pagination from './../template/pagination.vue'export default {components:{"pagination":pagination,},data() {return {tableData: [],dataObj:{},curPage: 1,total:100,pageSize:10,}},created(){this.getData();console.log(this.$refs) },methods: {getData(num,pageSize){let self = this;const params = new URLSearchParams();var startTime = self.value1[0];var endTime = self.value1[1];if(startTime == ''){startTime = '';}else{startTime = self.getTime(startTime);}if(endTime == ''){endTime = ''}else{endTime = self.getTime(endTime);}self.dataObj = {userName:self.userName,realName:self.realName,isClose:self.isClose,beginDate:startTime,endDate:endTime}if(!num){num = 1}if(!pageSize){pageSize = 10}let data = self.param(self.dataObj,num,pageSize);params.append('param',data);if(process.env.NODE_ENV === 'development'){self.url = '/s1/copUser/getUserList';};self.$axios.post(self.url, params).then((res) => {self.tableData = res.data.data.list;self.total = res.data.total;})},async search(pageNum1,pageSize1){let pageNum = this.curPage = (typeof (pageNum1) === 'number') ? pageNum1 : 1;if (pageSize1) {this.pageSize = pageSize1;};let pageSize = pageSize1 || this.pageSize;this.is_search = true;this.getData(pageNum,pageSize);}}}

这样就能用了,不过要注意分页要和获得的数据做配合,拿到数据后要自己进行处理

vue2.0实现分页组件相关推荐

  1. vue2.0桌面端框架_Element-UI组件库(Vue2.0桌面端组件库)V2.9.2 免费版

    Element-UI组件库(Vue2.0桌面端组件库)是一款很优秀好用的为开发者.设计师和产品经理推出的基于Vue 2.0的桌面端组件库软件.小编带来的这款Element-UI组件库功能强大全面,简单 ...

  2. vue tree组件_基于 Vue2.0 和 HeyUI 组件库的中后端系统 HeyUI Admin

    介绍 heyui-admin 是一个成熟的企业应用解决方案,基于 vue2.0 和 heyui 组件库的中后端系统. 功能 - Js - common / 通用 - ajax / 封装axios - ...

  3. vue2.0 如何自定义组件(vue组件的封装)

    一.前言 之前的博客聊过 vue2.0和react的技术选型:聊过vue的axios封装和vuex使用.今天简单聊聊 vue 组件的封装. vue 的ui框架现在是很多的,但是鉴于移动设备的复杂性,兼 ...

  4. vue结合饿了么_饿了么基于Vue2.0的通用组件开发之路(分享会记录)

    Element:一套通用组件库的开发之路 Element 是由饿了么UED设计.饿了么大前端开发的一套基于 Vue 2.0 的桌面端组件库.今天我们要分享的就是开发 Element 的一些心得. 官网 ...

  5. 基于VUE2.0的分页插件

    https://www.cnblogs.com/vivaxiaonan/p/9987985.html 基于jQuery的分页插件很多,今天分享一下基于Vue的分页插件pagination.js,该插件 ...

  6. vue2.0 class声明组件_案例精选 | 蘑菇街、滴滴、淘宝、微信的组件化架构解析

    导读:前段时间公司项目打算重构,准确来说应该是按之前的产品逻辑重写一个项目.在重构项目之前涉及到架构选型的问题,我和组里小伙伴一起研究了一下组件化架构,打算将项目重构为组件化架构.当然不是直接拿来照搬 ...

  7. vue组件中嵌套html,vue2.0怎么用组件自定义标签实现组件的嵌套?

    想用这种方式实现组件嵌套: 目前实现的方式:是在app-content.vue中的template中嵌套的 index.html main.js import Vue from '../node_mo ...

  8. vue2.0 非父子组件之间的单一事件通信

    前言 vue官网指出: 通过使用事件中心,允许组件自由交流,无论组件处于组件树的哪一层.由于 Vue 实例实现了一个事件分发接口,你可以通过实例化一个空的 Vue 实例来实现这个目的. 也就是说 非父 ...

  9. vue2.0中transition组件的用法

    作用:实现元素进入/离开的过渡效果. 首先,让我们举个栗子: <!DOCTYPE html> <html lang="en"><head>< ...

最新文章

  1. java gui 窗口 传值_java – GUI – 在不同窗口之间传输数据(J...
  2. Newtonsoft.Json的简单使用
  3. 中国联通与阿里宣布相互开放云计算资源
  4. OS X 内核研究 准备知识
  5. skywalking 安装_如何使用skywalking 进行全链路监控
  6. mysql 格式化_mysql中格式化数字详解
  7. Hdu 1026 Ignatius and the Princess I
  8. WPF Visifire 图表控件
  9. JSTL流程控制操作--c:if,c:choose,c:when,c:other
  10. Ubuntu 优化、美化(主题、终端)
  11. 重庆钢铁泛微oa系统服务器更新时间,泛微全新OA系统-协同办公系统
  12. 这件小事,我坚持了 200 天
  13. 【CXY】JAVA应用 之 排序
  14. ffmpeg 4.2.1 版本升级日志 APIChanges
  15. 【Lintcode】1799. Sequence Summation
  16. 《大规模元搜索引擎技(1)》一第1章 绪言
  17. 本地无需安装数据库,实现plsql远程连接数据库
  18. 组成原理——中央处理器(CPU功能和组成)
  19. webman apidoc安装、生成接口文档
  20. 太阳的光和灯光有什么区别_若日阳光照明|太阳能路灯与景观灯有什么不同?...

热门文章

  1. html怎么绘制飞线,绘制飞线,echarts迁徙图原理
  2. pythonfor循环语句例子_Python for循环学习总结
  3. 用winformz时间格式不正确_巨峰葡萄不能膨大?错!在正确的时间,用对方法,收获优质果穗型...
  4. 算法学习(三)堆排序
  5. Android Intent组件使用
  6. 抓取网址中的信息(需要解码的)
  7. 读写锁分离的循环队列
  8. 如何重置 Docker 里的 gitlab root 用户密码
  9. 实战 Windows Server 2012 群集共享卷
  10. 《信息存储与管理(第二版):数字信息的存储、管理和保护》—— 2.1 应用...