我是靠谱客的博主 灵巧冰棍,这篇文章主要介绍vue项目 将el-pagination封装成公用分页组件,现在分享给大家,希望可以做个参考。

组件页面 index.vue

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<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" /> </div> </template> <script> export default { name: 'Pagination', props: { total: { required: true, type: Number }, page: { type: Number, default: 0 }, limit: { type: Number, default: 10 }, pageSizes: { type: Array, default() { return [10, 20, 30, 50] } }, 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: { currentPage: { get() { return this.page + 1 }, set(val) { this.$emit('update:page', val - 1) } }, pageSize: { get() { return this.limit }, set(val) { this.$emit('update:limit', val) } } }, methods: { handleSizeChange(val) { this.$emit('pagination', { page: this.currentPage - 1, limit: val }) //因为后台接口currentPage是从0开始的 }, handleCurrentChange(val) { this.$emit('pagination', { page: val - 1, limit: this.pageSize }) } } } </script> <style scoped> .pagination-container { background: #fff; padding: 32px 16px; } .pagination-container.hidden { display: none; } </style>

组件使用

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<template> <pagination v-if="total>0" :total="total" :page.sync="listQuery.currentPage" :limit.sync="listQuery.pageSize" @pagination="getList" /> </template> <script> import Pagination from '@/components/Pagination' export default { components: { Pagination }, data() { returen { total: 0, listQuery: { currentPage: 0, //与后台定义好的分页参数 pageSize: 10 } } }, methods: { getList() { var _this = this //重新渲染数据 } } </script>

效果
在这里插入图片描述

最后

以上就是灵巧冰棍最近收集整理的关于vue项目 将el-pagination封装成公用分页组件的全部内容,更多相关vue项目内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部