Vue分頁組件實例代碼
本文實例為大家分享了Vue分頁組件的具體代碼,供大家參考,具體內容如下
當前組件依賴bootstrap樣式,使用前請先引用相關css。
Vue.component('pagination', {
template: `<nav aria-label="Page navigation">
<ul class="pagination">
<li :class="{'disabled': pageNum == 1}"><a href="#" v-on:click.prevent="turnToPage(1)" title="首頁" aria-label="首頁"><i class="fa fa-fast-backward"></i></a></li>
<li :class="{'disabled': pageNum == 1}"><a href="#" v-on:click.prevent="turnToPage(pageNum - 1)" title="上一頁" aria-label="上一頁"><i class="fa fa-backward"></i></a></li>
<li v-if="pageNum > 4"><a href="#" v-on:click.prevent="turnToPage(pageNum - 4)">...</a></li>
<li v-if="pageNum <= 4 && pageNum >1"><a href="#" v-on:click.prevent="turnToPage(1)">1</a></li>
<li v-if="pageNum - 3 > 1"><a href="#" v-on:click.prevent="turnToPage(pageNum - 3)">{{pageNum-3}}</a></li>
<li v-if="pageNum - 2 > 1"><a href="#" v-on:click.prevent="turnToPage(pageNum - 2)">{{pageNum-2}}</a></li>
<li v-if="pageNum - 1 > 1"><a href="#" v-on:click.prevent="turnToPage(pageNum - 1)">{{pageNum-1}}</a></li>
<li class="active"><a href="#" v-on:click.prevent="turnToPage(pageNum)">{{pageNum}}</a></li>
<li v-if="pageNum + 1 < pageTotal"><a href="#" v-on:click.prevent="turnToPage(pageNum + 1)">{{pageNum+1}}</a></li>
<li v-if="pageNum + 2 < pageTotal"><a href="#" v-on:click.prevent="turnToPage(pageNum + 2)">{{pageNum+2}}</a></li>
<li v-if="pageNum + 3 < pageTotal"><a href="#" v-on:click.prevent="turnToPage(pageNum + 3)">{{pageNum+3}}</a></li>
<li v-if="pageNum >= pageTotal - 4 && pageNum < pageTotal"><a href="#" v-on:click.prevent="turnToPage(pageTotal)">{{pageTotal}}</a></li>
<li v-if="pageNum < pageTotal - 4"><a href="#" v-on:click.prevent="turnToPage(pageNum + 4)">...</a></li>
<li :class="{'disabled': pageNum == pageTotal}"><a href="#" v-on:click.prevent="turnToPage(pageNum + 1)" title="下一頁" aria-label="下一頁"><i class="fa fa-forward"></i></a></li>
<li :class="{'disabled': pageNum == pageTotal}"><a href="#" v-on:click.prevent="turnToPage(pageTotal)" title="尾頁" aria-label="尾頁"><i class="fa fa-fast-forward"></i></a></li>
</ul>
</nav>`,
props: {
pageNum: Number,
pageSize: Number,
totalItemCount: Number,
},
computed: {
pageTotal: function () {
return Math.ceil(this.totalItemCount / this.pageSize)
}
},
methods: {
turnToPage: function (num) {
if (num > this.pageTotal || num <= 0) {
//toastr.error(`當前頁碼超出了范圍。頁碼:${num}`, '錯誤')
return false
}
this.$emit('change', num)
}
}
})
props定義三個屬性:當前頁碼,當前頁顯示數(shù)量,總數(shù)量
computed定義了一個計算方法:獲取總數(shù)量/當前頁顯示數(shù)量,向上取整,默認取10個
methods定義了一個根據(jù)頁碼跳轉方法:最終用于觸發(fā)change事件,$emit用于拋出自定義事件,組件外可以捕獲當前定義的change事件
html組件顯示:
以上的值為自己傳入的值
let vm = new Vue({
el: '#app',
data: {
criteria: {
keyword: '',
page: { num: 1, size: 10 }
},
itemsCount: 0
},
methods: {
skiptoPage: function (num) {
this.criteria.page.num = num;
}
}
});
以上方法是自定義事件change的方法,你們可以自己去修改內容。
效果圖

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Vue基于iview table展示圖片實現(xiàn)點擊放大
這篇文章主要介紹了Vue基于iview table展示圖片實現(xiàn)點擊放大,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08
VUE 無限層級樹形數(shù)據(jù)結構顯示的實現(xiàn)
在做項目中,會遇到一些樹形的數(shù)據(jù)結構,常用在左側菜單導航,本文就介紹一下如何實現(xiàn),感興趣的可以了解一下2021-07-07
laravel5.4+vue+element簡單搭建的示例代碼
本篇文章主要介紹了laravel5.4+vue+element簡單搭建的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08
Vue項目中實現(xiàn)描點跳轉scrollIntoView的案例
這篇文章主要介紹了Vue項目中實現(xiàn)描點跳轉scrollIntoView的案例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09

