Vue.js的表格分页组件

转自:http://www.cnblogs.com/Leo_wl/p/5522299.html

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

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

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

BootPage组件简介

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

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

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

使用方法

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

<table class="table table-hover table-bordered">
        <thead>
            <tr>
                <th width="10%">id</th>
                <th width="30%">name</th>
                <th width="40%">content</th>
                <th width="20%">remark</th>
            </tr>
        </thead>
        <tbody>
            <tr v-for="data in tableList">
                <td v-text="data.num"></td>
                <td v-text="data.author"></td>
                <td v-text="data.contents"></td>
                <td v-text="data.remark"></td>
            </tr>
        </tbody>
        <tfoot>
            <tr>
                <td colspan="4">
                    <div class="col-sm-12 pull-right">
                        <boot-page :async="false" :data="lists" :lens="lenArr" :page-len="pageLen"></boot-page>
                    </div>
                </td>
            </tr>
        </tfoot>
    </table>

<boot-page>标签中async指是否从服务器端获取数据,false为否;data为静态的表格数据数组;lens为每页显示行数的数组;page-len为可显示的页码数;

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

<script>
        import bootPage from ‘./components/BootPage.vue‘

        export default {
            data () {
                return {
                    lenArr: [10, 50, 100], // 每页显示长度设置
                    pageLen: 5, // 可显示的分页数
                    lists: [
                        {num: 1, author: ‘luozh‘, contents: ‘123‘, remark: ‘bootPage‘},
                        {num: 1, author: ‘luozh‘, contents: ‘123‘, remark: ‘bootPage‘},
                        {num: 1, author: ‘luozh‘, contents: ‘123‘, remark: ‘bootPage‘},
                        {num: 1, author: ‘luozh‘, contents: ‘123‘, remark: ‘bootPage‘},
                        {num: 1, author: ‘luozh‘, contents: ‘123‘, remark: ‘bootPage‘},
                        {num: 1, author: ‘luozh‘, contents: ‘123‘, remark: ‘bootPage‘}
                    ], // 表格原始数据,使用服务器数据时无需使用
                    tableList: [] // 分页组件传回的分页后数据
                }
            },
            components: {
                bootPage
            },
            events: {

                // 分页组件传回的表格数据
                ‘data‘ (data) {
                    this.tableList = data
                }
            }
        }
 </script>

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

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

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

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

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

<script>
        import bootPage from ‘./components/BootPage.vue‘

        export default {
            data () {
                return {
                    lenArr: [10, 50, 100], // 每页显示长度设置
                    pageLen: 5, // 可显示的分页数
                    url: ‘/bootpage/‘, // 请求路径
                    param: {}, // 向服务器传递参数
                    tableList: [] // 分页组件传回的分页后数据
                }
            },
            methods: {
                refresh () {
                    this.$broadcast(‘refresh‘) // 这里提供了一个表格刷新功能
                }
            },
            components: {
                bootPage
            },
            events: {

                // 分页组件传回的表格数据(这里即为服务器传回的数据)
                ‘data‘ (data) {
                    this.tableList = data
                }
            }
        }
</script>

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

组件源码

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

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

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

收工,欢迎评论指正。

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

本文地址:http://www.cnblogs.com/luozhihao/p/5516065.html

本文同步发表于:https://segmentfault.com/a/1190000005174322

分类: javascript

标签: Vue.js组件化

好文要顶 关注我 收藏该文  

一个萝卜一个坑、
关注 - 11
粉丝 - 30

+加关注

1

(请您对文章做出评价)

«上一篇:浅谈Vue.js

时间: 2024-10-13 05:33:42

Vue.js的表格分页组件的相关文章

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

BootPage组件简介 其实也不是啥高大上的组件了,相反确实一个简单的表格分页组件而已,主要是自己最近项目中需要一个表格分页组件,而Vue官方组件库里分页组件都功能太强大或者没有适合我的,所以就自己写了一个凑合着用,或许有人和我一样需要这样一个简单的分页组件来实现简单的分页功能,我便在这里分享一下,大家自觉填坑咯. 如需高大上的组件,可以移步Vue官方组件库:https://github.com/vuejs/awesome-vue#libraries--plugins BootPage是一款支

在sublime 编辑器中,安装插件 Vue Syntax Hightlight,高亮识别Vue.js 的单文件组件(*.vue)

转自:http://www.cnblogs.com/cosnyang/p/6290950.html 默认情况下,Vue.js 的单文件组件(*.vue)在 sublime 编辑器中是不被识别的.若要想高亮显示,需要安装插件 Vue Syntax Hightlight.安装步骤如下: 第一,在 sublime 中打开 PackageControl 如下图,快捷键 Ctrl+Shift+P. 第二,打开 Install Package 窗口.下图中第一个,回车. 打开过程中,右下角出现状态栏.如下图

JS表格分页组件:fupage的设计思路和具体用法(未来考虑开源,争取在2015年)

一.背景         之前在秒针工作的时候,某js高级工程师写了很多自己的组件,其中一套是分页组件,叫做st-grid.不过在我看来,bug太多,我经常给他反馈bug,我也不清楚为啥别人没有发现.    回到武汉工作后,我自己利用业余实践完善自己的官网,从前端到后端,都是自己一个人亲自搞定.    第1个分页的需求是,文章下方的评论,异步加载.第2个需求是,表格管理,比如后台管理系统,经常需要列出user.log等表的记录.   二.实例 <table class="table tab

vue+element UI实现分页组件

1.前言 在web页面中,常常需要将后台查询到的数据以表格形式展示出来,而这些数据量往往会非常庞大,如果将所有要展示的数据一次性请求获取并展示到页面上,那页面长度势必会变得非常的长,很不美观.更重要的是,如果数据量过于大,在页面加载时一次性请求全部数据将会耗费大量网络资源,性能极低.但是,如果我们可以将数据分页展示,这样页面首先不会变的冗长,另外只有用户点击页码才会发出请求并且每次请求的数据量也不会很大,这就极大的节省了网络资源,提高了性能.本文就以vue结合element UI实现一个数据分页

Vue.js 基础学习之组件

什么是组件:组件是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.在较高层面上,组件是自定义的元素,Vue.js的编译器为它添加特殊功能.在有些情况下,组件也可以是原生HTML元素的形式,以is特性扩展. 创建全局组件 <div id="seg1"> <alert></alert> </div> <div id="seg2"> <alert></alert>

vue.js中的全局组件和局部组件

组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素, Vue.js 的编译器为它添加特殊功能. 组件的使用有三个步骤: 1.创建组件构造器 2.注册组件 3.使用组件 先来看一段代码: <!DOCTYPE html> <html> <body> <div id="app"> <!-- 3. #app是Vue实例挂载的元素,应该在挂载元素范围内使

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

通过多次爬坑,发现了这些监听滚动来加载更多的组件的共同点, 因为这些加载更多的方法是绑定在需要加载更多的内容的元素上的, 所以是进入页面则直接触发一次,当监听到滚动事件之后,继续加载更多, 所以对于无限滚动加载不需要写首次载入列表的函数, 代码如下: html: //父组件 <div v-infinite-scroll="loadMore" infinite-scroll-disabled="loading" infinite-scroll-distance=

基于Vue的简单通用分页组件

分页组件是每一个系统里必不可少的一个组件,分页组件分为两部分.第一部分是模版部分,用于显示当前分页组件的状态,例如正在获取数据.没有数据.没有下一页等等:第二部分是分页数据对象,用于封装一个分页组件的属性和方法,例如获取数据的 url.当前第几页(page).每次加载条数(count).一共有多少页(totalPage)等等,方法可能会有上一页.下一页.处理数据等等. 分页数据对象 import base from '@/api/base' export default class Pagina

Mint-ui(基于 Vue.js 的移动端组件库)的使用

官网: http://mint-ui.github.io/#!/zh-cn 1.安装包 npm install mint-ui -S 2.导包 import Vue from 'vue'import MintUi from 'mint-ui' // 导入全部组件import 'mint-ui/lib/style.css'Vue.use(MintUi) 3.css类mint-ui组建的使用 <template> <div>  <mt-button type="defa