Vue 分頁(yè)組件

有一段時(shí)間沒(méi)更新文章了,主要是因?yàn)樽约阂恢痹诿χ鴮W(xué)習(xí)新的東西而忘記分享了搪泳,實(shí)在慚愧稀轨。

該文章為本人轉(zhuǎn)載,原文地址已經(jīng)找不到了岸军。

分享一個(gè)編寫(xiě)的一個(gè)Vue的小組件,名叫BootPage。不了解Vue.js的童鞋可以移步我的上一篇文章《淺談Vue.js》了解一下涵卵。

BootPage組件簡(jiǎn)介

其實(shí)也不是啥高大上的組件了提佣,相反確實(shí)一個(gè)簡(jiǎn)單的表格分頁(yè)組件而已,主要是自己最近項(xiàng)目中需要一個(gè)表格分頁(yè)組件方妖,而Vue官方組件庫(kù)里分頁(yè)組件都功能太強(qiáng)大或者沒(méi)有適合我的狭魂,所以就自己寫(xiě)了一個(gè)湊合著用,或許有人和我一樣需要這樣一個(gè)簡(jiǎn)單的分頁(yè)組件來(lái)實(shí)現(xiàn)簡(jiǎn)單的分頁(yè)功能党觅,我便在這里分享一下雌澄,大家自覺(jué)填坑咯。

如需高大上的組件仔役,可以移步Vue官方組件庫(kù):https://github.com/vuejs/awesome-vue#libraries--plugins

BootPage是一款支持靜態(tài)數(shù)據(jù)和服務(wù)器數(shù)據(jù)的表格分頁(yè)組件掷伙,支持調(diào)整每頁(yè)顯示行數(shù)和頁(yè)碼顯示個(gè)數(shù),樣式基于bootstrap又兵,就像這樣:

使用方法

在.vue的組件文件中我們這樣寫(xiě)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為每頁(yè)顯示行數(shù)的數(shù)組;page-len為可顯示的頁(yè)碼數(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], // 每頁(yè)顯示長(zhǎng)度設(shè)置
                pageLen: 5, // 可顯示的分頁(yè)數(shù)
                lists: [
                    {num: 1, author: 'luozh', contents: 'BootPage是一款支持靜態(tài)數(shù)據(jù)和服務(wù)器數(shù)據(jù)的表格分頁(yè)組件', remark: 'dsds'},
                    {num: 2, author: 'luozh', contents: '支持調(diào)整每頁(yè)顯示行數(shù)和頁(yè)碼顯示個(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為每頁(yè)顯示行數(shù)的數(shù)組', remark: 'dsds'},
                    {num: 6, author: 'luozh', contents: 'page-len為可顯示的頁(yè)碼數(shù)', remark: 'dsds'},
                    {num: 7, author: 'luozh', contents: '服務(wù)器回傳參數(shù)為{data:[], page_num: 6}, 其中data為表格數(shù)據(jù)秽梅,page_num為總頁(yè)數(shù)', remark: 'dsds'},
                    {num: 8, author: 'luozh', contents: '可以調(diào)用this.$refs.page.refresh()刷新表格數(shù)據(jù)', remark: 'dsds'}
                ], // 表格原始數(shù)據(jù)抹蚀,使用服務(wù)器數(shù)據(jù)時(shí)無(wú)需使用
                tableList: [] // 分頁(yè)組件傳回的分頁(yè)后數(shù)據(jù)
            }
        },
        components: {
            bootPage
        },
        events: {

            // 分頁(yè)組件傳回的表格數(shù)據(jù)
            'data' (data) {
                this.tableList = data
            }
        }
    }

</script>

一般我們很少使用靜態(tài)的表格數(shù)據(jù),大多數(shù)應(yīng)用的數(shù)據(jù)都是從服務(wù)器端獲取的企垦,所以這里提供了獲取服務(wù)器分頁(yè)數(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ù)器的請(qǐng)求地址环壤;param為需要向服務(wù)器發(fā)送的參數(shù)對(duì)象;

使用服務(wù)器數(shù)據(jù)javascript的代碼如下:

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

    export default {
        data () {
            return {
                lenArr: [10, 50, 100], // 每頁(yè)顯示長(zhǎng)度設(shè)置
                pageLen: 5, // 可顯示的分頁(yè)數(shù)
                url: '/bootpage/', // 請(qǐng)求路徑
                param: {}, // 向服務(wù)器傳遞參數(shù)
                tableList: [] // 分頁(yè)組件傳回的分頁(yè)后數(shù)據(jù)
            }
        },
        methods: {
            refresh () {
                this.$refs.page.refresh() // 這里提供了一個(gè)表格刷新功能
            }
        },
        components: {
            bootPage
        },
        events: {

            // 分頁(yè)組件傳回的表格數(shù)據(jù)(這里即為服務(wù)器傳回的數(shù)據(jù))
            'data' (data) {
                this.tableList = data
            },

            // 刷新數(shù)據(jù)
            'refresh' () {
                this.refresh()
            }
        }
    }

</script>
注:服務(wù)器除了傳給組件表格的數(shù)組內(nèi)容钞诡,還需一個(gè)總頁(yè)數(shù)的鍵名郑现,名為page_num

組件自帶向服務(wù)器傳遞的參數(shù)為:

{
active: 1, // 當(dāng)前頁(yè)碼
length: 5 // 每頁(yè)顯示個(gè)數(shù)
}
服務(wù)器回傳的參數(shù)需為:

{
data: [], // 表格數(shù)據(jù)
page_num: 5 // 總頁(yè)數(shù)
}

組件源碼

至于分頁(yè)的實(shí)現(xiàn)源碼這里的就不展示了,所有源碼我都上傳到了我的github荧降,地址為:https://github.com/luozhihao/BootPage

這里事先提個(gè)醒:因?yàn)檫@個(gè)組件是我用幾個(gè)小時(shí)趕出來(lái)的接箫,所以對(duì)于Vue組件的編寫(xiě)格式和規(guī)范肯定是考慮不周的,沒(méi)有完全獨(dú)立出來(lái)朵诫,所以自覺(jué)填坑咯辛友,這里只作分享。

當(dāng)然你也可以隨意的修改組件的代碼來(lái)適合自己項(xiàng)目的使用拗窃,畢竟實(shí)現(xiàn)大而全的分頁(yè)組件還是比較復(fù)雜的瞎领。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市随夸,隨后出現(xiàn)的幾起案子九默,更是在濱河造成了極大的恐慌,老刑警劉巖宾毒,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驼修,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡诈铛,警方通過(guò)查閱死者的電腦和手機(jī)乙各,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)幢竹,“玉大人耳峦,你說(shuō)我怎么就攤上這事』篮粒” “怎么了蹲坷?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)邑飒。 經(jīng)常有香客問(wèn)我循签,道長(zhǎng),這世上最難降的妖魔是什么疙咸? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任县匠,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘乞旦。我一直安慰自己贼穆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布杆查。 她就那樣靜靜地躺著扮惦,像睡著了一般臀蛛。 火紅的嫁衣襯著肌膚如雪亲桦。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天浊仆,我揣著相機(jī)與錄音客峭,去河邊找鬼。 笑死抡柿,一個(gè)胖子當(dāng)著我的面吹牛舔琅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播洲劣,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼备蚓,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了囱稽?” 一聲冷哼從身側(cè)響起郊尝,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎战惊,沒(méi)想到半個(gè)月后流昏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吞获,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年况凉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片各拷。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡刁绒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出烤黍,到底是詐尸還是另有隱情知市,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布蚊荣,位于F島的核電站初狰,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏互例。R本人自食惡果不足惜奢入,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧腥光,春花似錦关顷、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至捉片,卻和暖如春平痰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背伍纫。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工宗雇, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人莹规。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓赔蒲,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親良漱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子舞虱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容