el-pagination 分页组件
在中后盾零碎中,常常会应用分页器组件。el-pagination 须要配置
page-size、layout、@current-change等诸多属性。每个页面都这样子应用的话既容易呈现谬误,也会造成代码冗余
组件设计(完整版)
p-el-pagination 默认的属性,如background、small、page-sizes等,请依据理论业务批改默认值
调用成果及代码
<!-- * @Date: 2022-05-11 14:38:32 * @Author: surewinT 840325271@qq.com * @LastEditTime: 2022-05-11 14:50:41 * @LastEditors: surewinT 840325271@qq.com * @Description:--><template> <div class=""> <p-el-pagination :total="total" :size="100" @handlePageSizeChange="handlePageSizeChange" /> </div></template><script>import Pagination from './p-el-pagination.vue';export default { components: { 'p-el-pagination': Pagination, }, props: [], data() { return { total: 500, }; }, mounted() {}, watch: {}, methods: { handlePageSizeChange(page, size) { console.log('分页器变动:', page, size); }, },};</script><style lang='scss' scoped></style>
组件源码(p-el-checkbox.vue)
<!-- * @Date: 2021-09-27 17:17:18 * @Author: surewinT 840325271@qq.com * @LastEditTime: 2022-05-11 14:50:49 * @LastEditors: surewinT 840325271@qq.com * @Description: 分页器组件--><template> <div class="" style="text-align: center"> <el-pagination @size-change="sizeChange" @current-change="pageChange" :current-page="currentPage" :page-sizes="[30, 50, 100, 200, 500]" :page-size="size" layout="total, sizes, prev, pager, next, jumper" :total="total" background small > </el-pagination> </div></template><script>export default { components: {}, props: { total: { type: Number, default: 0, }, size: { type: Number, default: 30, }, page: { type: Number, default: 1, }, }, data() { return { currentPage: 1, currentsize: 30, }; }, mounted() { this.currentsize = this.size; this.currentPage = this.page; }, watch: { size() { this.currentsize = this.size; }, page() { this.currentPage = this.page; }, }, methods: { sizeChange(val) { this.currentsize = val; // size变动时,默认定位到第一页 this.currentPage = 1; this.$emit( 'handlePageSizeChange', this.currentPage, this.currentsize ); }, pageChange(val) { this.currentPage = val; this.$emit( 'handlePageSizeChange', this.currentPage, this.currentsize ); }, },};</script><style lang='scss' scoped>::v-deep { .el-input__inner { height: 25px; }}</style>
仓库源码
后续补充