pagination.js

var pageComponent = Vue.extend({
template: <nav aria-label="Page navigation"> <ul class="pagination"> <li :class="{\'disabled\':curPage==1}"> <a href="javascript:;" @click="goPage(curPage==1?1:curPage-1)" aria-label="Previous"> <span aria-hidden="true">&laquo;</span> </a> </li> <li v-for="page in showPageBtn" :class="{\'active\':page==curPage}"> <a href="javascript:;" v-if="page" @click="goPage(page)">{{page}}</a> <a href="javascript:;" v-else>···</a> </li> <li :class="{\'disabled\':curPage==pages}"> <a href="javascript:;" @click="goPage(curPage==pages?pages:curPage+1)" aria-label="Next"> <span aria-hidden="true">&raquo;</span> </a> </li> </ul> </nav>, props: {pages: {type: Number, default: 1}, current: {type: Number, default: 1}}, data() {
return {curPage: 1}
}, computed: {
showPageBtn() {
let pageNum = this.pages;
let index = this.curPage;
let arr = [];
if (pageNum <= 5) {
for (let i = 1; i <= pageNum; i++) {
arr.push(i)
}
return arr
}
if (index <= 2) return [1, 2, 3, 0, pageNum];
if (index >= pageNum - 1) return [1, 0, pageNum - 2, pageNum - 1, pageNum];
if (index === 3) return [1, 2, 3, 4, 0, pageNum];
if (index === pageNum - 2) return [1, 0, pageNum - 3, pageNum - 2, pageNum - 1, pageNum];
return [1, 0, index - 1, index, index + 1, 0, pageNum];
}
}, methods: {
goPage(page) {
if (page != this.curPage) {
console.log(page);
this.curPage = page;
this.$emit(‘navpage’, this.curPage);
} else {
console.log(‘Already in the current page’);
}
}
}
});
//全局组件注册
Vue.component(‘navigation’, pageComponent);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值