<template>
<div>
<el-pagination :page-sizes="[5, 10, 30, 50]" :page-size="pageSize" :total="total" :current-page="currentPage"
@size-change="handleSizeChange" @current-change="handleCurrentChange" layout="total, sizes, prev, pager, next, jumper"></el-pagination>
<div class="content">
<span v-for="item in paginatedData" :key="item.id">
<el-tag>{{ item.name }}</el-tag>
</span>
</div>
</div>
</template>
<script>
export default {
data() {
return {
currentPage: 1,
pageSize: 5,
total: 50,
tableData: [],
};
},
mounted() {
setTimeout(() => {
this.tableData = [
{ id: 1, name: 'Tom', email: 'tom@example.com' },
{ id: 2, name: 'Jerry', email: 'jerry@example.com' },
{ id: 3, name: 'Lucy', email: 'lucy@example.com' },
{ id: 4, name: 'Kate', email: 'kate@example.com' },
{ id: 5, name: 'Jim', email: 'jim@example.com' },
{ id: 6, name: 'Bob', email: 'bob@example.com' },
{ id: 7, name: 'Alice', email: 'alice@example.com' },
{ id: 8, name: 'John', email: 'john@example.com' },
{ id: 9, name: 'Jane', email: 'jane@example.com' },
{ id: 10, name: 'Mike', email: 'mike@example.com' },
{ id: 11, name: 'Susan', email: 'susan@example.com' },
{ id: 12, name: 'David', email: 'david@example.com' },
{ id: 13, name: 'Peter', email: 'peter@example.com' },
{ id: 14, name: 'Mary', email: 'mary@example.com' },
{ id: 15, name: 'Amy', email: 'amy@example.com' },
{ id: 16, name: 'Jack', email: 'jack@example.com' },
{ id: 17, name: 'Sam', email: 'sam@example.com' },
{ id: 18, name: 'Tim', email: 'tim@example.com' },
{ id: 19, name: 'Eva', email: 'eva@example.com' },
{ id: 20, name: 'Lisa', email: 'lisa@example.com' },
{ id: 21, name: 'Eric', email: 'eric@example.com' },
{ id: 22, name: 'Kevin', email: 'kevin@example.com' },
{ id: 23, name: 'Wendy', email: 'wendy@example.com' },
{ id: 24, name: 'Harry', email: 'harry@example.com' },
{ id: 25, name: 'Lily', email: 'lily@example.com' },
{ id: 26, name: 'Oliver', email: 'oliver@example.com' },
{ id: 27, name: 'George', email: 'george@example.com' },
{ id: 28, name: 'Emma', email: 'emma@example.com' },
{ id: 29, name: 'Nancy', email: 'nancy@example.com' },
{ id: 30, name: 'Frank', email: 'frank@example.com' },
{ id: 31, name: 'Grace', email: 'grace@example.com' },
{ id: 32, name: 'Ella', email: 'ella@example.com' },
{ id: 33, name: 'Sophia', email: 'sophia@example.com' },
{ id: 34, name: 'Helen', email: 'helen@example.com' },
{ id: 35, name: 'Bill', email: 'bill@example.com' },
{ id: 36, name: 'Rose', email: 'rose@example.com' },
{ id: 37, name: 'Tony', email: 'tony@example.com' },
{ id: 38, name: 'Maggie', email: 'maggie@example.com' },
{ id: 39, name: 'Mark', email: 'mark@example.com' },
{ id: 40, name: 'Andy', email: 'andy@example.com' },
{ id: 41, name: 'Zoe', email: 'zoe@example.com' },
{ id: 42, name: 'Vanessa', email: 'vanessa@example.com' },
{ id: 43, name: 'Chloe', email: 'chloe@example.com' },
{ id: 44, name: 'Olivia', email: 'olivia@example.com' },
{ id: 45, name: 'Jasmine', email: 'jasmine@example.com' },
{ id: 46, name: 'Ethan', email: 'ethan@example.com' },
{ id: 47, name: 'Daniel', email: 'daniel@example.com' },
{ id: 48, name: 'Rachel', email: 'rachel@example.com' },
{ id: 49, name: 'Cindy', email: 'cindy@example.com' },
{ id: 50, name: 'Vicky', email: 'vicky@example.com' },
];
this.total = this.tableData.length;
}, 1000);
},
methods: {
handleSizeChange(val) {
this.pageSize = val;
},
handleCurrentChange(val) {
this.currentPage = val;
},
},
computed: {
paginatedData() {
const start = (this.currentPage - 1) * this.pageSize;
const end = start + this.pageSize;
return this.tableData.slice(start, end);
},
},
};
</script>
<style lang="scss">
.content {
height: 300px;
.el-tag {
margin: 5px;
}
}
</style>