vue?el-pagination分頁查詢封裝的示例代碼
需求:因為需要用到表單查詢的地方太多了,所以為了避免每個頁面都寫分頁組件,直接封裝好調(diào)用就完事了,簡簡單單
1.創(chuàng)建Pigination.vue公用組件
<template> <div :class="{'hidden':hidden}" class="pagination-container"> <el-pagination :background="background" :current-page.sync="currentPage" :page-size.sync="pageSize" :layout="layout" :page-sizes="pageSizes" :total="total" v-bind="$attrs" @size-change="handleSizeChange" @current-change="handleCurrentChange" ></el-pagination> </div> </template> <script> export default { name: 'Pagination', props: { total: { required: true, type: Number }, // 當前頁數(shù) page: { type: Number, default: 1 }, // 限制,一頁多多少行 limit: { type: Number, default: 20 }, // 分頁 pageSizes: { type: Array, default() { return [10, 20, 30, 50, 100] } }, layout: { type: String, default: 'total, sizes, prev, pager, next, jumper' }, background: { type: Boolean, default: true }, autoScroll: { type: Boolean, default: true }, hidden: { type: Boolean, default: false } }, computed: { // 當前頁數(shù) currentPage: { get() { return this.page; }, set(val) { this.$emit('update:page', val); } }, pageSize: { get() { return this.limit; }, set(val) { this.$emit('update:limit', val); } } }, methods: { handleSizeChange(val) { this.$emit('pagination', { page: this.currentPage, size: val }); // if (this.autoScroll) { // scrollTo(0, 800); // } }, handleCurrentChange(val) { this.$emit('pagination', { page: val, size: this.pageSize }); // if (this.autoScroll) { // scrollTo(0, 800); // } } } } </script> <style scoped> .pagination-container { background: #fff; padding-top: 10px; } .pagination-container.hidden { display: none; } </style>
2.需要使用分頁組件的頁面調(diào)用
<template> <div class="content-box"> <div class="container"> <p>主體頁面 2 - 2</p> <div class="table-container"> <el-table ref="Table2" :data="list" style="width: 100%;" show-overflow-tooltip="true" @selection-change="handleSelectionChange" border > <el-table-column type="selection" align="center"></el-table-column> <el-table-column label="操作" width="120" align="center" fixed="right"> </el-table-column> </el-table> </div> <!-- 分頁組件 --> <Pagination :total="total" :page.sync="listQuery.pageNum" :limit.sync="listQuery.pageSize" @pagination="getList"></Pagination> </div> </div> </template> <script> import Pagination from '@/components/common/Pagination'; import { testApi } from '@/api/test'; const defaultListQuery = { pageNum: 1,//給后端的數(shù)據(jù),可以根據(jù)后端需要更改 pageSize: 10, keyword: '' }; export default { data() { return { listQuery: Object.assign({}, defaultListQuery),//淺拷貝,引用數(shù)據(jù)類型相互影響 list: [], total: 0, listLoading: true, selectedList: [] }; }, components: { // 注冊分頁 Pagination }, created() { this.getList(); }, methods: { getList() { // 獲取數(shù)據(jù)列表 this.listLoading = true; testApi(this.listQuery).then(res => { this.listLoading = false; this.list = res.data.list; this.total = res.data.total; }); }, handleSelectionChange(val) { // 批量選擇行數(shù) this.selectedList = val; } } }; </script>
3.結(jié)果
到此這篇關(guān)于vue el-pagination分頁查詢封裝的文章就介紹到這了,更多相關(guān)vue el-pagination分頁查詢封裝內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vite項目import.meta.env如何能獲取非VITE開發(fā)的環(huán)境變量
這篇文章主要介紹了vite項目import.meta.env如何能獲取非VITE開發(fā)的環(huán)境變量問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05Vue實現(xiàn)動態(tài)圓環(huán)百分比進度條
這篇文章主要為大家詳細介紹了Vue實現(xiàn)動態(tài)圓環(huán)百分比進度條,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09Vue使用axios進行數(shù)據(jù)異步交互的方法
大家都知道在Vue里面有兩種出名的插件能夠支持發(fā)起異步數(shù)據(jù)傳輸和接口交互,分別是axios和vue-resource,同時vue更新到2.0之后,宣告不再對vue-resource更新,而是推薦的axios,今天就講一下怎么引入axios,需要的朋友可以參考下2024-01-01vue-cli3 項目從搭建優(yōu)化到docker部署的方法
這篇文章主要介紹了vue-cli3 項目從搭建優(yōu)化到docker部署的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01vue中this.$message的實現(xiàn)過程詳解
Message在開發(fā)中的使用頻率很高,也算是Element-UI組件庫中比較簡單的,對于感興趣的朋友可以一起探討一下Message組件的實現(xiàn),本文詳細介紹了vue中this.$message的實現(xiàn)過程,感興趣的同學可以參考一下2023-04-04vue-以文件流-blob-的形式-下載-導(dǎo)出文件操作
這篇文章主要介紹了vue-以文件流-blob-的形式-下載-導(dǎo)出文件操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08Vue $mount實戰(zhàn)之實現(xiàn)消息彈窗組件
這篇文章主要介紹了Vue $mount實現(xiàn)消息彈窗組件的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-04-04