vue 实现简单表格分页功能

2023年5月17日08:06:49

使用框架实现表格展示和跳转功能,一直不懂原理。所以自己写一个简单的,加深理解。

布局分为2块,上面是表格展示数据,下面是点击按钮跳转。
效果图:
vue 实现简单表格分页功能
代码:

<!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>

  • 作者:白菜09
  • 原文链接:https://blog.csdn.net/weixin_42329007/article/details/127645955
    更新时间:2023年5月17日08:06:49 ,共 2018 字。