效果展示


HTML
<div class="page_bar no-select"><ul class="clearfix"><li class="iconfont":class="{vh : currentPage === 1}"@click="subCurrentPage"></li><li :class="{vh : currentPage <= showPageNumCeil}">...</li><li v-for="item in showPageBarList":key="item.id":class="{current : item.id===currentPage}"@click="getCurrentPageNum(item.id)">{{item.id}}</li><li :class="{vh : currentPage >= pageNum - (showPageNum - showPageNumCeil)}">...</li><li class="iconfont":class="{vh : currentPage === pageNum}"@click="addCurrentPage"></li></ul><input type="text"ref="ipt"v-model="iptValue">/{{pageNum}}<button @click="getInputCurrentPage()">跳转</button>
</div>
数据需要
data () {return {dataList: [],totalPage: [],dataShow: [],pageSize: 3,pageNum: 1,currentPage: 1,pageBarList: [],showPageNum: 5,showPageNumCeil: 0,showPageBarList: [],iptValue: ''};
},
函数需要
methods: {pageInit () {this.pageNum = Math.ceil(this.dataList.length / this.pageSize) || 1this.getTotalPage()this.getDataShow()this.getpageBarList()this.getShowPageNumCeil()this.getShowPageBarList()},getPageNum () {this.pageNum = Math.ceil(this.dataList.length / this.pageSize) || 1},getTotalPage () {for (let i = 0; i < this.pageNum; i++) {this.totalPage[i] = this.dataList.slice(this.pageSize * i, this.pageSize * (i + 1))}},getDataShow () {this.dataShow = this.totalPage[this.currentPage - 1]},getpageBarList () {for (var i = 1; i <= this.pageNum; i++) {var obj = {id: i,state: false}this.pageBarList[this.pageBarList.length] = obj}},getShowPageNumCeil () {this.showPageNumCeil = Math.ceil(this.showPageNum / 2)},getShowPageBarList () {if (this.currentPage <= this.showPageNumCeil) {this.showPageBarList = this.pageBarList.slice(0, this.showPageNum)} else if (this.currentPage >= this.pageNum - (this.showPageNum - this.showPageNumCeil)) {this.showPageBarList = this.pageBarList.slice(this.pageNum - this.showPageNum, this.pageNum)} else {this.showPageBarList = this.pageBarList.slice(this.currentPage - this.showPageNumCeil, this.currentPage + this.showPageNum - this.showPageNumCeil)}},getCurrentPageNum (num) {this.currentPage = num},subCurrentPage () {this.currentPage--},addCurrentPage () {this.currentPage++},getInputCurrentPage () {if (1 <= this.iptValue && this.iptValue <= this.pageNum) {this.currentPage = Number(this.iptValue)this.iptValue = ''} else {alert('请输入正确的页码')this.iptValue = ''}}},
运用
watch: {currentPage: {handler () {this.getDataShow()this.getShowPageBarList()},immediate: true,}},created () {this.pageInit()},