Vue組件BootPage實(shí)現(xiàn)簡單的分頁功能
有一段時(shí)間沒更新文章了,主要是因?yàn)樽约阂恢痹诿χ鴮W(xué)習(xí)新的東西而忘記分享了,實(shí)在慚愧。
這不,大半夜發(fā)文更一篇文章,分享一個(gè)自己編寫的一個(gè)Vue的小組件,名叫BootPage。
不了解Vue.js的童鞋可以移步我的上一篇文章《淺談Vue.js》了解一下。
BootPage組件簡介
其實(shí)也不是啥高大上的組件了,相反確實(shí)一個(gè)簡單的表格分頁組件而已,主要是自己最近項(xiàng)目中需要一個(gè)表格分頁組件,而Vue官方組件庫里分頁組件都功能太強(qiáng)大或者沒有適合我的,所以就自己寫了一個(gè)湊合著用,或許有人和我一樣需要這樣一個(gè)簡單的分頁組件來實(shí)現(xiàn)簡單的分頁功能,我便在這里分享一下,大家自覺填坑咯。
如需高大上的組件,可以移步Vue官方組件庫:https://github.com/vuejs/awesome-vue#libraries--plugins
BootPage是一款支持靜態(tài)數(shù)據(jù)和服務(wù)器數(shù)據(jù)的表格分頁組件,支持調(diào)整每頁顯示行數(shù)和頁碼顯示個(gè)數(shù),樣式基于bootstrap,就像這樣:

在線演示:https://luozhihao.github.io/B...
使用方法
在.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="pull-left"> <button class="btn btn-default" v-on:click="refresh">刷新</button> </div> <div class="pull-right"> <boot-page :async="false" :data="lists" :lens="lenArr" :page-len="pageLen" :param="param"></boot-page> </div> </td> </tr> </tfoot> </table>
<boot-page>標(biāo)簽中async指是否從服務(wù)器端獲取數(shù)據(jù),false為否;data為靜態(tài)的表格數(shù)據(jù)數(shù)組;lens為每頁顯示行數(shù)的數(shù)組;page-len為可顯示的頁碼數(shù);
使用靜態(tài)數(shù)據(jù)的javascript代碼即script標(biāo)簽內(nèi)的內(nèi)容如下:
<script>
import bootPage from './components/BootPage.vue'
export default {
data () {
return {
lenArr: [10, 50, 100], // 每頁顯示長度設(shè)置
pageLen: 5, // 可顯示的分頁數(shù)
lists: [
{num: 1, author: 'luozh', contents: 'BootPage是一款支持靜態(tài)數(shù)據(jù)和服務(wù)器數(shù)據(jù)的表格分頁組件', remark: 'dsds'},
{num: 2, author: 'luozh', contents: '支持調(diào)整每頁顯示行數(shù)和頁碼顯示個(gè)數(shù),樣式基于bootstrap', remark: 'dsds'},
{num: 3, author: 'luozh', contents: '<boot-page>標(biāo)簽中async指是否從服務(wù)器端獲取數(shù)據(jù),false為否', remark: 'dsds'},
{num: 4, author: 'luozh', contents: 'data為靜態(tài)的表格數(shù)據(jù)數(shù)組;', remark: 'dsds'},
{num: 5, author: 'luozh', contents: 'lens為每頁顯示行數(shù)的數(shù)組', remark: 'dsds'},
{num: 6, author: 'luozh', contents: 'page-len為可顯示的頁碼數(shù)', remark: 'dsds'},
{num: 7, author: 'luozh', contents: '服務(wù)器回傳參數(shù)為{data:[], page_num: 6}, 其中data為表格數(shù)據(jù),page_num為總頁數(shù)', remark: 'dsds'},
{num: 8, author: 'luozh', contents: '可以調(diào)用this.$refs.page.refresh()刷新表格數(shù)據(jù)', remark: 'dsds'}
], // 表格原始數(shù)據(jù),使用服務(wù)器數(shù)據(jù)時(shí)無需使用
tableList: [] // 分頁組件傳回的分頁后數(shù)據(jù)
}
},
components: {
bootPage
},
events: {
// 分頁組件傳回的表格數(shù)據(jù)
'data' (data) {
this.tableList = data
}
}
}
</script>
一般我們很少使用靜態(tài)的表格數(shù)據(jù),大多數(shù)應(yīng)用的數(shù)據(jù)都是從服務(wù)器端獲取的,所以這里提供了獲取服務(wù)器分頁數(shù)據(jù)的方法:
使用服務(wù)器數(shù)據(jù)的組件HTML如下:
<boot-page v-ref:page :async="true" :lens="lenArr" :url="url" :page-len="pageLen" :param="param"></boot-page>
其中url為服務(wù)器的請求地址;param為需要向服務(wù)器發(fā)送的參數(shù)對象;
使用服務(wù)器數(shù)據(jù)javascript的代碼如下:
<script>
import bootPage from './components/BootPage.vue'
export default {
data () {
return {
lenArr: [10, 50, 100], // 每頁顯示長度設(shè)置
pageLen: 5, // 可顯示的分頁數(shù)
url: '/bootpage/', // 請求路徑
param: {}, // 向服務(wù)器傳遞參數(shù)
tableList: [] // 分頁組件傳回的分頁后數(shù)據(jù)
}
},
methods: {
refresh () {
this.$refs.page.refresh() // 這里提供了一個(gè)表格刷新功能
}
},
components: {
bootPage
},
events: {
// 分頁組件傳回的表格數(shù)據(jù)(這里即為服務(wù)器傳回的數(shù)據(jù))
'data' (data) {
this.tableList = data
},
// 刷新數(shù)據(jù)
'refresh' () {
this.refresh()
}
}
}
</script>
注:服務(wù)器除了傳給組件表格的數(shù)組內(nèi)容,還需一個(gè)總頁數(shù)的鍵名,名為page_num
組件自帶向服務(wù)器傳遞的參數(shù)為:
{
active: 1, // 當(dāng)前頁碼
length: 5 // 每頁顯示個(gè)數(shù)
}
服務(wù)器回傳的參數(shù)需為:
{
data: [], // 表格數(shù)據(jù)
page_num: 5 // 總頁數(shù)
}
組件源碼
至于分頁的實(shí)現(xiàn)源碼這里的就不展示了,所有源碼我都上傳到了我的github,地址為:https://github.com/luozhihao/BootPage
這里事先提個(gè)醒:因?yàn)檫@個(gè)組件是我用幾個(gè)小時(shí)趕出來的,所以對于Vue組件的編寫格式和規(guī)范肯定是考慮不周的,沒有完全獨(dú)立出來,所以自覺填坑咯,這里只作分享。
當(dāng)然你也可以隨意的修改組件的代碼來適合自己項(xiàng)目的使用,畢竟實(shí)現(xiàn)大而全的分頁組件還是比較復(fù)雜的。
本文已被整理到了《Vue.js前端組件學(xué)習(xí)教程》,歡迎大家學(xué)習(xí)閱讀。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- vue組件 $children,$refs,$parent的使用詳解
- 解決vue組件中使用v-for出現(xiàn)告警問題及v for指令介紹
- Vue組件tree實(shí)現(xiàn)樹形菜單
- Vue組件之全局組件與局部組件的使用詳解
- 詳解利用jsx寫vue組件的方法示例
- 在vue組件中使用axios的方法
- vue組件如何被其他項(xiàng)目引用
- vue組件中點(diǎn)擊按鈕后修改輸入框的狀態(tài)實(shí)例代碼
- vue組件實(shí)現(xiàn)文字居中對齊的方法
- Vue組件選項(xiàng)props實(shí)例詳解
- vue組件中使用iframe元素的示例代碼
- 使用Vue組件實(shí)現(xiàn)一個(gè)簡單彈窗效果
- 詳解vue組件通信的三種方式
- 在Vue組件上動態(tài)添加和刪除屬性方法
- 通過npm引用的vue組件使用詳解
- vue組件實(shí)現(xiàn)可搜索下拉框擴(kuò)展
- Vue組件通信之Bus的具體使用
- 從零開始封裝自己的自定義Vue組件
相關(guān)文章
使用vue實(shí)現(xiàn)grid-layout功能實(shí)例代碼
這篇文章主要介紹了使用vue實(shí)現(xiàn)grid-layout功能的代碼講解,需要的朋友可以參考下2018-01-01
vue watch自動檢測數(shù)據(jù)變化實(shí)時(shí)渲染的方法
本篇文章主要介紹了vue watch自動檢測數(shù)據(jù)變化實(shí)時(shí)渲染的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-01-01
vue實(shí)現(xiàn)頁面渲染時(shí)候執(zhí)行某需求的示例代碼
本文主要介紹了vue實(shí)現(xiàn)頁面渲染時(shí)候執(zhí)行某需求,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05
基于vue-router 多級路由redirect 重定向的問題
今天小編就為大家分享一篇基于vue-router 多級路由redirect 重定向的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09

