vue中的自定義分頁(yè)插件組件的示例
介紹一下,已經(jīng)有很多的vue分頁(yè)的組件了,大家都是大同小易,那么我就結(jié)合自身的使用,寫(xiě)出了一片文章
首先在新建一個(gè)分頁(yè)模塊
在模塊中引入相應(yīng)的代碼,(內(nèi)有詳細(xì)的注釋?zhuān)?/p>
template中
<div class="page-bar"> <ul> <li class="first"> <span>共{{dataNum}}條記錄 第 {{cur}} / {{all}} 頁(yè)</span> </li> <li v-if="cur>1"> <a v-on:click="cur--,pageClick()"><</a>//點(diǎn)擊上一頁(yè) </li> <li v-if="cur==1"> <a class="banclick"><</a>//點(diǎn)擊第一頁(yè)時(shí)顯示 </li> <li class="li_a" v-for="index in indexs" v-bind:class="{ 'active': cur == index}"> <a v-on:click="btnClick(index)">{{ index }}</a>//頁(yè)碼 </li> <li v-if="cur!=all"> <a v-on:click="cur++,pageClick()">></a>//點(diǎn)擊下一頁(yè) </li> <li v-if="cur == all"> <a class="banclick">></a> //點(diǎn)擊最后一頁(yè)時(shí)顯示 </li> <li class="last_li"> <span>共<i>{{all}}</i>頁(yè)</span> // 共有多少頁(yè) </li> </ul> </div>
style中的內(nèi)容
.page-bar a { width: 34px; height: 34px; border: 1px solid #ddd; text-decoration: none; position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); /*margin-left: -1px;*/ line-height: 34px; color: #333; cursor: pointer } .page-bar .li_a a:hover { background-color: #eee; border: 1px solid #40A9FF; color: #40A9FF; } .page-bar a.banclick { cursor: not-allowed; } .page-bar .active a { color: #fff; cursor: default; background-color: #1890FF; border-color: #1890FF; } .page-bar i { font-style: normal; color: #d44950; margin: 0px 4px; font-size: 14px; }
script
export default { //顯示的聲明組件 name: "paging", //從父級(jí)組件中傳值過(guò)來(lái)的,你可以自己設(shè)置名字,但是需要跟父級(jí)傳入的名字一致! props : ["dataAll","dataCur","datanum","dataDatanum"], data() { return { all: this.dataAll, //總頁(yè)數(shù) cur: this.dataCur ,//當(dāng)前頁(yè)碼 num: this.datanum , //一頁(yè)顯示的數(shù)量 奇數(shù) dataNum: this.dataDatanum,//數(shù)據(jù)的數(shù)量 } }, watch: { cur: function(oldValue, newValue) { //父組件通過(guò)change方法來(lái)接受當(dāng)前的頁(yè)碼 this.$emit('change', oldValue) //這里是直接點(diǎn)擊執(zhí)行函數(shù) } }, methods: { btnClick: function(data) { //頁(yè)碼點(diǎn)擊事件 if(data != this.cur) { this.cur = data } }, pageClick: function() { console.log('現(xiàn)在在' + this.cur + '頁(yè)'); //父組件通過(guò)change方法來(lái)接受當(dāng)前的頁(yè)碼 //這里是點(diǎn)擊下一頁(yè)執(zhí)行函數(shù) this.$emit('change', this.cur) } }, computed: { indexs: function() { var left = 1; var right = this.all; var ar = []; if(this.all >= this.num ) { if(this.cur > 3 && this.cur < this.all - 2) { left = this.cur - (this.num-1)/2 right = this.cur + (this.num-1)/2 } else { if(this.cur <= 3) { left = 1 right = this.num } else { right = this.all left = this.all - (this.num - 1); } } } while(left <= right) { ar.push(left) left++ } return ar } } }
父級(jí)的組件內(nèi)容
<template> //這是我自己設(shè)置的,可以根據(jù)情況不用設(shè)置不同的樣式 <div class="page"> //這里時(shí)通過(guò)props傳值到子級(jí),并有一個(gè)回調(diào)change的函數(shù),來(lái)獲取自己傳值到父級(jí)的值 <paging :dataAll="all" :dataCur="cur" :datanum="num" :dataDatanum="dataNum" @change="pageChange"></paging> </div> </template> <style scoped> .page { width: 100%; min-width: 1068px; height: 36px; margin: 40px auto; } </style> <script> import Paging from './paging' export default { name: "homepage", components: { Paging }, data() { return { all: 40, //總頁(yè)數(shù) cur: 1, //當(dāng)前頁(yè)碼 num: 7, //一頁(yè)顯示的數(shù)量 必須是奇數(shù) dataNum: 400, //數(shù)據(jù)的數(shù)量 } }, methods: { //子級(jí)傳值到父級(jí)上來(lái)的動(dòng)態(tài)拿去 pageChange: function(page) { this.cur = page } } } </script>
最后重新保存,重新運(yùn)行
npm run dev
注意
可以根據(jù)自己喜好來(lái)自己動(dòng)手做一個(gè)分頁(yè),我在其它人的基礎(chǔ)之上添加了頁(yè)碼以及當(dāng)前頁(yè)面數(shù),也可以添加跳轉(zhuǎn)的頁(yè)數(shù)(暫時(shí)沒(méi)有做),也可以更改css樣式來(lái)改變!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue 封裝導(dǎo)出Excel數(shù)據(jù)的公共函數(shù)的方法
本文主要介紹了vue 封裝導(dǎo)出Excel數(shù)據(jù)的公共函數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09vue使用iview的modal彈窗嵌套modal出現(xiàn)格式錯(cuò)誤的解決
這篇文章主要介紹了vue使用iview的modal彈窗嵌套modal出現(xiàn)格式錯(cuò)誤的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09mpvue開(kāi)發(fā)音頻類(lèi)小程序踩坑和建議詳解
這篇文章主要介紹了mpvue開(kāi)發(fā)音頻類(lèi)小程序踩坑和建議詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03使用vue-router切換頁(yè)面時(shí)實(shí)現(xiàn)設(shè)置過(guò)渡動(dòng)畫(huà)
今天小編就為大家分享一篇使用vue-router切換頁(yè)面時(shí)實(shí)現(xiàn)設(shè)置過(guò)渡動(dòng)畫(huà)。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10uniapp前端實(shí)現(xiàn)微信支付功能全過(guò)程(小程序、公眾號(hào)H5、app)
這篇文章主要介紹了uniapp前端實(shí)現(xiàn)微信支付功能的相關(guān)資料,通過(guò)uniapp開(kāi)發(fā)跨平臺(tái)應(yīng)用時(shí),需要處理不同平臺(tái)的支付方式,包括微信小程序支付、公眾號(hào)H5支付和App支付,需要的朋友可以參考下2024-09-09