vue分頁(yè)器組件編寫(xiě)方法詳解
使用vue編寫(xiě)的分頁(yè)器組件,支持輸入頁(yè)碼跳轉(zhuǎn),效果如圖:
1、點(diǎn)擊前五頁(yè):

2、點(diǎn)擊中間部分頁(yè)面

3、點(diǎn)擊第一頁(yè),上一頁(yè)按鈕失效,點(diǎn)擊最后一頁(yè),下一頁(yè)按鈕失效

組件調(diào)用:
//html調(diào)用 參數(shù):pageSize(總頁(yè)數(shù));pageNo(當(dāng)前頁(yè))
<pager :pageSize="pageSize" v-model="pageNo" @on-jump="jump"></pager>
//組件引入
import pager from '../../component/pager/pager.vue'
//組件調(diào)用聲明
components:{ pager}
//參數(shù)
data(){
return {
pageSize: 30,
pageNo: 2
}
}
//接收跳轉(zhuǎn)事件
methods:{
jump(id){
console.log(id)
},
}組件編寫(xiě)
pager.vue:
<template>
<div class="pager-wrapper" ref="pager">
<div class="pager-box">
<a class="pager-prev" :class="{'pager-disabled':prevDisable}" href="javascript:;" @click="jumpPrev()">上一頁(yè)</a>
<template v-for="i in pageSize">
<span v-if="i==pageNo" class="pager-curr">
<em class="pager-em"></em><em>{{i}}</em>
</span>
<a v-else-if="pageNo<5&&(i)<6" href="javascript:;" @click="jump(i)">
{{i}}
</a>
<a v-else-if="pageSize<7||i==1||i==pageSize||(pageNo-2<=i&&i<=pageNo+2)" href="javascript:;" @click="jump(i)">
{{i}}
</a>
<template v-else>
<span v-if="pageNo<5&&i==6" class="pager-spr">…</span>
<span v-if="pageNo==4&&i==7" class="pager-spr">…</span>
<span v-if="pageNo>4&&i==pageNo-3" class="pager-spr">…</span>
<span v-if="pageNo>4&&i==pageNo+3" class="pager-spr">…</span>
</template>
</template>
<a class="pager-next" :class="{'pager-disabled':nextDisable}" href="javascript:;" @click="jumpNext()">下一頁(yè)</a>
</div>
<div class="pager-input">
<input type="text" v-model="jumpPage">
<a class="pager-btn-go" href="javascript:;" @click="Go()">GO</a>
</div>
</div>
</template>
<script>
export default {
model:{ //通過(guò)v-model傳過(guò)來(lái)的參數(shù)
prop: 'pageNo',
event: 'jumpPage'
},
props:{
pageSize:{
type: Number,
default: 1
},
pageNo:{ //通過(guò)v-model傳過(guò)來(lái)的參數(shù)
type: Number,
default: 1
}
},
data(){
return {
jumpPage:'' //避免操作props參數(shù)
}
},
computed: {
prevDisable: function(){ //“上一頁(yè)”按鈕是否可點(diǎn)
if(this.pageNo > 1){
return false;
}else{
return true
}
},
nextDisable: function(){ //“下一頁(yè)”按鈕是否可點(diǎn)
if(this.pageNo < this.pageSize && this.pageSize > 1){
return false;
}else{
return true;
}
},
},
methods: {
jumpPrev: function(){ //點(diǎn)擊上一頁(yè)
if(this.pageNo == 1){
return ;
}else{
this.$emit('jumpPage',this.pageNo-1);
this.$emit('on-jump',this.pageNo-1);
}
},
jumpNext: function(){ //點(diǎn)擊下一頁(yè)
if(this.pageNo == this.pageSize){
return ;
}else{
this.$emit('jumpPage',this.pageNo+1); //修改當(dāng)前頁(yè)碼
this.$emit('on-jump',this.pageNo+1); //跳轉(zhuǎn)
}
},
jump: function(id){ //直接跳轉(zhuǎn)
if(id>this.pageSize){
id=this.pageSize;
}
this.jumpPage = '';
this.$emit('jumpPage',id); //修改當(dāng)前頁(yè)碼
this.$emit('on-jump',id); //跳轉(zhuǎn)
},
Go: function(){
if(this.jumpPage==''){ //判空處理
return ;
}else if(/^\d*$/.test(parseInt(this.jumpPage))){ //填寫(xiě)數(shù)字才能跳轉(zhuǎn)
this.jump(parseInt(this.jumpPage));
this.jumpPage = '';
}else{
this.jumpPage = '';
return ;
}
}
}
}
</script>完整代碼可下載:vue分頁(yè)器組件
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
element 穿梭框性能優(yōu)化的實(shí)現(xiàn)
本文主要介紹了element 穿梭框性能優(yōu)化,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
Vue el使用el-checkbox-group復(fù)選框進(jìn)行單選框方式
這篇文章主要介紹了Vue el使用el-checkbox-group復(fù)選框進(jìn)行單選框方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
Fragment 占位組件不生成標(biāo)簽與路由組件lazyLoad案例
這篇文章主要為大家介紹了Fragment 占位組件不生成標(biāo)簽與路由組件lazyLoad案例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
Vue如何循環(huán)提取對(duì)象數(shù)組中的值
這篇文章主要介紹了Vue如何循環(huán)提取對(duì)象數(shù)組中的值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
純JS如何實(shí)現(xiàn)vue.js下的雙向綁定功能
對(duì)于vue下的雙向綁定功能,個(gè)人理解為在處理邏輯的過(guò)程中緩存了大量的node對(duì)象,node對(duì)象可以是html標(biāo)簽、文本內(nèi)容。既然選擇了緩存這些對(duì)象,那么在用的過(guò)程中哪里需要改變就把node拿出來(lái),進(jìn)行標(biāo)簽屬性的變更或者文本內(nèi)容的修改。本文主要講了如何實(shí)現(xiàn)雙向綁定2021-06-06
vue中子組件如何間接修改父組件傳遞過(guò)來(lái)的值問(wèn)題
這篇文章主要介紹了vue中子組件如何間接修改父組件傳遞過(guò)來(lái)的值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05

