用Vue实现前端接后端分页
时间: 2023-08-04 17:21:17 浏览: 84
好的,我可以帮你解答这个问题。
首先,前端需要向后端发送一个请求,请求需要包含当前页码和每页显示的条数。后端接收到请求后,返回当前页的数据以及总数据条数。
接着,前端可以根据总数据条数计算出总页数,并渲染一个分页组件。在分页组件中,我们需要监听页码的变化,当页码变化时,重新向后端发送请求,获取对应页的数据,然后刷新数据的显示。
下面是一个简单的使用Vue实现前端接后端分页的示例代码:
```html
<template>
<div>
<table>
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in list" :key="index">
<td>{{ item.name }}</td>
<td>{{ item.age }}</td>
</tr>
</tbody>
</table>
<div class="pagination">
<ul>
<li v-if="currentPage > 1" @click="currentPage--">上一页</li>
<li v-for="page in pages" :key="page" @click="goToPage(page)" :class="{ active: page === currentPage }">{{ page }}</li>
<li v-if="currentPage < pages.length" @click="currentPage++">下一页</li>
</ul>
</div>
</div>
</template>
<script>
export default {
data() {
return {
currentPage: 1, // 当前页码
pageSize: 10, // 每页显示条数
total: 0, // 总数据条数
list: [] // 当前页数据
}
},
computed: {
pages() {
// 计算总页数
const pages = []
for (let i = 1; i <= Math.ceil(this.total / this.pageSize); i++) {
pages.push(i)
}
return pages
}
},
mounted() {
this.getList()
},
methods: {
getList() {
// 向后端发送请求,获取当前页数据和总数据条数
// 省略代码
this.list = data.list
this.total = data.total
},
goToPage(page) {
this.currentPage = page
this.getList()
}
}
}
</script>
```
在这个示例中,我们使用了一个`list`数组来存储当前页的数据,一个`total`变量来存储总数据条数,以及一个`currentPage`变量来存储当前页码。在`computed`中,我们计算出了总页数,并在分页组件中渲染出来。在数据变化时,我们通过监听页码的变化,重新向后端发送请求,获取对应页的数据,然后刷新数据的显示。
希望这个示例对你有所帮助!
阅读全文