转载自 基于Vue.js的表格分页组件

有一段时间没更新文章了,主要是因为自己一直在忙着学习新的东西而忘记分享了,实在惭愧。

这不,大半夜发文更一篇文章,分享一个自己编写的一个Vue的小组件,名叫BootPage。

不了解Vue.js的童鞋可以移步我的上一篇文章《浅谈Vue.js》了解一下。

BootPage组件简介

其实也不是啥高大上的组件了,相反确实一个简单的表格分页组件而已,主要是自己最近项目中需要一个表格分页组件,而Vue官方组件库里分页组件都功能太强大或者没有适合我的,所以就自己写了一个凑合着用,或许有人和我一样需要这样一个简单的分页组件来实现简单的分页功能,我便在这里分享一下,大家自觉填坑咯。

如需高大上的组件,可以移步Vue官方组件库: https://github.com/vuejs/awesome-vue#libraries--plugins

BootPage是一款支持静态数据和服务器数据的表格分页组件,支持调整每页显示行数和页码显示个数,样式基于bootstrap,就像这样:

使用方法

在.vue的组件文件中我们这样写template,即html代码:

  1. <table class="table table-hover table-bordered">
  2. <thead>
  3. <tr>
  4. <th width="10%">id</th>
  5. <th width="30%">name</th>
  6. <th width="40%">content</th>
  7. <th width="20%">remark</th>
  8. </tr>
  9. </thead>
  10. <tbody>
  11. <tr v-for="data in tableList">
  12. <td v-text="data.num"></td>
  13. <td v-text="data.author"></td>
  14. <td v-text="data.contents"></td>
  15. <td v-text="data.remark"></td>
  16. </tr>
  17. </tbody>
  18. <tfoot>
  19. <tr>
  20. <td colspan="4">
  21. <div class="col-sm-12 pull-right">
  22. <boot-page :async="false" :data="lists" :lens="lenArr" :page-len="pageLen"></boot-page>
  23. </div>
  24. </td>
  25. </tr>
  26. </tfoot>
  27. </table>
  28. <boot-page>标签中async指是否从服务器端获取数据,false为否;data为静态的为分页的表格数据数组;lens为每页显示行数的数组;page-len为可显示的页码数;

使用静态数据的javascript代码即script标签内的内容如下:

  1. <script>
  2. import bootPage from './components/BootPage.vue'
  3. export default {
  4. data () {
  5. return {
  6. lenArr: [10, 50, 100], // 每页显示长度设置
  7. pageLen: 5, // 可显示的分页数
  8. lists: [
  9. {num: 1, author: 'luozh', contents: '123', remark: 'bootPage'},
  10. {num: 1, author: 'luozh', contents: '123', remark: 'bootPage'},
  11. {num: 1, author: 'luozh', contents: '123', remark: 'bootPage'},
  12. {num: 1, author: 'luozh', contents: '123', remark: 'bootPage'},
  13. {num: 1, author: 'luozh', contents: '123', remark: 'bootPage'},
  14. {num: 1, author: 'luozh', contents: '123', remark: 'bootPage'}
  15. ], // 表格原始数据,使用服务器数据时无需使用
  16. tableList: [] // 分页组件传回的分页后数据
  17. }
  18. },
  19. components: {
  20. bootPage
  21. },
  22. events: {
  23. // 分页组件传回的表格数据
  24. 'data' (data) {
  25. this.tableList = data
  26. }
  27. }
  28. }
  29. </script>

一般我们很少使用静态的表格数据,大多数应用的数据都是从服务器端获取的,所以这里提供了获取服务器分页数据的方法:

使用服务器数据的组件HTML如下:

  1. <boot-page :async="true" :lens="lenArr" :url="url" :page-len="pageLen" :param="param"></boot-page>

其中url为服务器的请求地址;param为需要向服务器发送的参数对象;

使用服务器数据javascript的代码如下:

  1. <script>
  2. import bootPage from './components/BootPage.vue'
  3. export default {
  4. data () {
  5. return {
  6. lenArr: [10, 50, 100], // 每页显示长度设置
  7. pageLen: 5, // 可显示的分页数
  8. url: '/bootpage/', // 请求路径
  9. param: {}, // 向服务器传递参数
  10. tableList: [] // 分页组件传回的分页后数据
  11. }
  12. },
  13. methods: {
  14. refresh () {
  15. this.$broadcast('refresh') // 这里提供了一个表格刷新功能
  16. }
  17. },
  18. components: {
  19. bootPage
  20. },
  21. events: {
  22. // 分页组件传回的表格数据(这里即为服务器传回的数据)
  23. 'data' (data) {
  24. this.tableList = data
  25. }
  26. }
  27. }
  28. </script>

注:服务器除了传给组件表格的数组内容,还需一个总页数的键名,名为page_num

组件源码

至于分页的实现源码这里的就不展示了,所有源码我都上传到了我的github,地址为: https://github.com/luozhihao/BootPage

这里事先提个醒:因为这个组件是我用几个小时赶出来的,所以对于Vue组件的编写格式和规范肯定是考虑不周的,没有完全独立出来,所以自觉填坑咯,这里只作分享。

当然你也可以随意的修改组件的代码来适合自己项目的使用,毕竟实现大而全的分页组件还是比较复杂的。

收工,欢迎评论指正。

原创文章,转载请注明来自 一个萝卜一个坑 -博客园[http://www.cnblogs.com/luozhihao]

基于Vue.js的表格分页组件相关推荐

  1. vue php 分页组件,基于Vue.js的表格分页组件

    有一段时间没更新文章了,主要是因为自己一直在忙着学习新的东西而忘记分享了,实在惭愧. 这不,大半夜发文更一篇文章,分享一个自己编写的一个Vue的小组件,名叫BootPage.不了解Vue.js的童鞋可 ...

  2. iView 3.3.0 发布,基于 Vue.js 的企业级 UI 组件库

    iView 3.3.0 发布了,代号 Transistor ,iView 是一套基于 Vue.js 的企业级 UI 组件库,主要服务于 PC 界面的中后台产品. 本次更新如下: https://www ...

  3. iView 3.4.0 发布,基于 Vue.js 的企业级 UI 组件库

    百度智能云 云生态狂欢季 热门云产品1折起>>>   iView 3.4.0 发布了,iView 是一套基于 Vue.js 的企业级 UI 组件库,主要服务于 PC 界面的中后台产品 ...

  4. Mint UI —— 基于 Vue.js 的移动端组件库

    写文章登录 Mint UI -- 基于 Vue.js 的移动端组件库 杨奕 8 个月前 Mint UI GitHub:https://github.com/ElemeFE/mint-ui 项目主页:h ...

  5. 移动端cube界面设计html,滴滴开源基于 Vue.js 的移动端组件库 cube-ui

    原标题:滴滴开源基于 Vue.js 的移动端组件库 cube-ui 开源最前线(ID:OpenSourceTop) 猿妹 整编 综合自:https://didi.github.io/cube-ui/ ...

  6. 说说如何基于 Vue.js 实现表格组件

    我们基于 Vue.js 实现一个可根据某列进行排序的表格组件. 一个表格包含表头和数据两部分内容.因此,我们定义两个数组,columns 表示表头信息,在 <thread> 中渲染,并可在 ...

  7. 基于Vue.js的后台管理系统组件开发

    什么是Vue Vue.js 是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,它不仅易于上手,还便于与第三方库或既有项目整合. ...

  8. 基于 Vue.js 的移动端组件库mint-ui实现无限滚动加载更多

    通过多次爬坑,发现了这些监听滚动来加载更多的组件的共同点, 因为这些加载更多的方法是绑定在需要加载更多的内容的元素上的, 所以是进入页面则直接触发一次,当监听到滚动事件之后,继续加载更多, 所以对于无 ...

  9. mint-ui(基于 Vue.js 的移动端组件库)

    1.引入文件 引入全部组件 import Vue from 'vue' import MintUI from 'mint-ui' import 'mint-ui/lib/style.css' impo ...

最新文章

  1. C语言编写Scheme解释器,C语言编写logo语言解释器 ,求高手指导
  2. 配置文件管理服务器,06-配置文件管理
  3. (86)Verilog HDL:三分频设计
  4. 计算机网络实验报告3-tcp,计算机网络实验报告3-TCP.doc
  5. 一题多解(二)—— 循环队列为空(满)的判断
  6. STL中的序列式容器——priority_queue(优先队列)
  7. 随手记---Pharming
  8. 博客园模板--博客园老牛大讲堂
  9. 马小云:利用信息差赚钱的暴利创业项目 ,批量开店月入3万
  10. C语言:寻找重复数字
  11. 动态规划 机器人军团 POJ2533 中等
  12. Google地图开发初级篇
  13. 关于自然语言处理中的语义与概念
  14. nodejs卸载安装
  15. 微擎支付返回商户单号_微信小程序支付流程
  16. MySQL#Update语句
  17. 【生活常识】如何能安逸的活着?
  18. 园林专业毕业论文范文
  19. Googlenbsp;Earth中高级使用技巧(二)
  20. js的单双引号嵌套问题

热门文章

  1. Ubuntu中的回车与换行
  2. Powershell 函数中的CmdletBinding()是怎么回事?
  3. 使用 imitator 实现前后端分离开发中的数据模拟与静态资源映射
  4. 利用Civil 3D API更改曲面的样式
  5. 如何了解事件中回调函数的参数
  6. 2021 OWASP Top 10 榜单(初稿)发布,头牌易主
  7. VMware 修复可窃取管理员凭据的高危漏洞
  8. 特斯拉起诉离职员工窃取机密代码和文件
  9. Stringlifier:Adobe 开源日志清理和凭据暴露检测工具
  10. Sophos 紧急修复已遭利用的防火墙 0day