使用框架实现表格展示和跳转功能,一直不懂原理。所以自己写一个简单的,加深理解。
布局分为2块,上面是表格展示数据,下面是点击按钮跳转。
效果图:
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
table {
border-collapse: collapse;
}
table,
th,
td {
border: 1px solid black;
}
.jump ul {
display: flex;
}
.jump ul li {
list-style: none;
}
</style>
</head>
<body>
<div id="app">
<!-- 展现数据的表格 -->
<table>
<!-- 表头 -->
<tr>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
<th>操作</th>
</tr>
<!-- 每一行数据 -->
<tr v-for="(item,index) in currentList" :key="index">
<td>{{item.name}}</td>
<td>{{item.age}}</td>
<td>{{item.gender}}</td>
<td>
<button>修改</button>
<button>删除</button>
</td>
</tr>
</table>
<!-- 点击跳转按钮部分 -->
<div class="jump">
<ul>
<li>
<button @click="goto(1)">首页</button>
</li>
<li v-for="(item,index) in getPageNum()">
<button @click="goto(item)">{{item}}</button>
</li>
<li>
<button @click="goto(totalPage)">尾页</button>
</li>
</ul>
</div>
</div>
</body>
</html>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
<script>
new Vue({
el: "#app",
data: {
// 总页数
totalPage: 0,
// 每页包含数据条数
pageSize: 5,
// 当前在第几页
currentPage: 1,
// 当前页面的数据
currentList: [],
// 表格的总体数据
dataList: [
{
name: "stu1",
age: 20,
gender: "male",
},
{
name: "stu2",
age: 21,
gender: "male",
},
{
name: "stu3",
age: 20,
gender: "male",
},
{
name: "stu4",
age: 20,
gender: "male",
},
{
name: "stu1",
age: 20,
gender: "male",
},
{
name: "stu2",
age: 21,
gender: "male",
},
{
name: "stu3",
age: 20,
gender: "male",
},
{
name: "stu4",
age: 20,
gender: "male",
},
{
name: "stu1",
age: 20,
gender: "male",
},
{
name: "stu2",
age: 21,
gender: "male",
},
{
name: "stu3",
age: 20,
gender: "male",
},
{
name: "stu4",
age: 20,
gender: "male",
},
],
},
created() {
// 计算一共有多少页
this.totalPage = Math.ceil(this.dataList.length / this.pageSize);
this.getPageData(1);
},
methods: {
// 获取页码数组,用于渲染点击跳转button
getPageNum() {
pageList = [];
for (let index = 0; index < this.totalPage; index++) {
pageList[index] = index + 1;
}
return pageList;
},
// 更新表格页面显示数据
getPageData(index) {
this.currentList = this.dataList.slice(
(index - 1) * this.pageSize,
index * this.pageSize
);
},
// 跳转到指定页面
goto(index) {
this.getPageData(index);
},
},
});
</script>