vue 列表渲染并带有分页功能 数据库为CREATE TABLE `tasks` ( `id` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT COMMENT '任务编号', `name` varchar(55) NOT NULL, `start` varchar(55) DEFAULT NULL COMMENT '任务开始时间', `end` varchar(55) DEFAULT NULL COMMENT '任务结束时间', `user_id` int(10) unsigned zerofill DEFAULT NULL COMMENT '接手员工编号', `manager_id` int(10) unsigned zerofill DEFAULT NULL COMMENT '管理员编号', PRIMARY KEY (`id`,`name`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
时间: 2023-08-16 16:41:42 浏览: 89
vue+elementUI组件table实现前端分页功能
好的,可以按照以下步骤实现:
1. 从后端API获取任务列表数据,并将数据存储在Vue组件的data属性中。
2. 使用Vue的计算属性来对任务列表进行分页,计算属性接收当前页码和每页显示的任务数量作为参数,然后返回经过分页处理的任务列表。
3. 使用v-for指令将分页后的任务列表渲染到页面上。
4. 使用v-if指令判断分页组件是否显示,如果当前任务列表的长度大于每页显示的任务数量,则显示分页组件,否则不显示。
5. 在分页组件中,使用v-for指令循环渲染页码按钮,并绑定点击事件,点击按钮时调用计算属性重新计算分页后的任务列表。
6. 可以使用Axios库向后端API发送请求,获取任务列表数据。
以下是一个简单的实现示例:
```
<template>
<div>
<ul>
<li v-for="task in pagedTasks">{{ task.name }}</li>
</ul>
<div v-if="showPagination">
<button v-for="page in pageCount" :key="page" @click="changePage(page)">{{ page }}</button>
</div>
</div>
</template>
<script>
import axios from 'axios';
export default {
data() {
return {
tasks: [], // 任务列表数据
currentPage: 1, // 当前页码
pageSize: 10, // 每页显示的任务数量
};
},
computed: {
// 计算属性,返回分页后的任务列表
pagedTasks() {
const start = (this.currentPage - 1) * this.pageSize;
const end = start + this.pageSize;
return this.tasks.slice(start, end);
},
// 计算总页数
pageCount() {
return Math.ceil(this.tasks.length / this.pageSize);
},
// 判断是否显示分页组件
showPagination() {
return this.tasks.length > this.pageSize;
},
},
methods: {
// 改变当前页码
changePage(page) {
this.currentPage = page;
},
// 从后端API获取任务列表数据
getTasks() {
axios.get('/api/tasks').then(response => {
this.tasks = response.data;
});
},
},
mounted() {
this.getTasks();
},
};
</script>
```
阅读全文