vue自定义控件之分页器
时间: 2023-09-30 17:12:38 浏览: 115
自定义分页控件
分页器是一个常见的 UI 控件,用于展示数据的分页情况,并提供翻页操作。在 Vue 中,我们可以通过自定义组件的方式来实现分页器。下面是一个简单的分页器组件示例:
```vue
<template>
<div class="pagination">
<button :disabled="currentPage === 1" @click="prevPage">上一页</button>
<span class="page-num">{{ currentPage }} / {{ totalPages }}</span>
<button :disabled="currentPage === totalPages" @click="nextPage">下一页</button>
</div>
</template>
<script>
export default {
props: {
currentPage: {
type: Number,
required: true
},
totalPages: {
type: Number,
required: true
}
},
methods: {
prevPage() {
if (this.currentPage > 1) {
this.$emit('page-change', this.currentPage - 1);
}
},
nextPage() {
if (this.currentPage < this.totalPages) {
this.$emit('page-change', this.currentPage + 1);
}
}
}
}
</script>
<style scoped>
.pagination {
display: flex;
justify-content: center;
align-items: center;
margin-top: 20px;
}
button {
margin: 0 10px;
padding: 5px 10px;
border-radius: 5px;
border: none;
background-color: #007aff;
color: #fff;
cursor: pointer;
}
button:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.page-num {
font-size: 16px;
font-weight: bold;
margin: 0 10px;
}
</style>
```
在这个示例中,我们定义了两个 props:currentPage 和 totalPages,分别表示当前页和总页数。组件中包含上一页、下一页按钮和页码信息。通过点击按钮来触发 page-change 事件,从而更新父组件中的 currentPage 值,实现翻页操作。
使用该组件时,只需在父组件中传入 currentPage 和 totalPages 值,并监听 page-change 事件即可:
```vue
<template>
<div>
<div v-for="item in items">{{ item }}</div>
<pagination :current-page="currentPage" :total-pages="totalPages" @page-change="handlePageChange" />
</div>
</template>
<script>
import Pagination from './Pagination.vue';
export default {
components: {
Pagination
},
data() {
return {
items: ['item1', 'item2', 'item3', 'item4', 'item5', 'item6', 'item7', 'item8', 'item9', 'item10'],
currentPage: 1,
totalPages: 2
}
},
methods: {
handlePageChange(page) {
this.currentPage = page;
}
}
}
</script>
```
这里只是一个简单的分页器示例,实际开发中还可以根据需求进行扩展,例如添加页码输入框、每页显示条数控制等。
阅读全文