前端案例:基于el-table和el-pagination实现数据的分页效果

简介: 前端案例:基于el-table和el-pagination实现数据的分页效果

一、案例效果

image.png

(14 条数据每页显示 6 条,共 3 页。)


二、实现步骤&涉及要点

1. el-table 表格存放数据

<el-table :data="tableData.slice((currentPage - 1) * pageSize, currentPage * pageSize)" stripe
                  style="width: 100%">
          <el-table-column prop="date" label="日期" width="220" align="center"></el-table-column>
          <el-table-column prop="name" label="姓名" width="220" align="center"></el-table-column>
          <el-table-column prop="job" label="职业" width="220" align="center"></el-table-column>
          <el-table-column prop="address" label="地址" align="center"></el-table-column>
        </el-table>

image.png

注意此处在选择要显示的数据时也需要对其进行截取操作,否则会直接全部显示。我们使用的是 slice(start,end) 截取数组,其中不包括 end;


:data="tableData.slice((currentPage - 1) * pageSize, currentPage * pageSize)"

每页数据量 pageSize 为 6, currentPage 为当前页;比如第一页,那么截取的就是 0 ~ 6,slice 返回的是数组副本,所以这个 0 ~ 6 代表下标,就有七条数据,去掉下标为 6 的数据,即为 6 条;后面依次...


2. el-pagination 设置分页效果

<el-pagination
              background
              layout="prev, pager, next,jumper, ->, total, slot"
              :total="tableData.length"
              @current-change="handleCurrentChange"
              :current-page="currentPage"
              :page-size="pageSize"
              style="text-align: center">
      </el-pagination>

image.png


三、完整代码+详细注释

<template>
  <div>
    <div class="paging">
      <!--数据显示区域-->
      <div class="data">
        <!--表格存放数组中的数据,并对数据进行截取,以控制每一页显示的数据量-->
        <!--slice(start,end) 不包括end-->
        <el-table :data="tableData.slice((currentPage - 1) * pageSize, currentPage * pageSize)" stripe
                  style="width: 100%">
          <el-table-column prop="date" label="日期" width="220" align="center"></el-table-column>
          <el-table-column prop="name" label="姓名" width="220" align="center"></el-table-column>
          <el-table-column prop="job" label="职业" width="220" align="center"></el-table-column>
          <el-table-column prop="address" label="地址" align="center"></el-table-column>
        </el-table>
      </div>
      <!--分页按钮-->
      <el-pagination
              background
              layout="prev, pager, next,jumper, ->, total"
              :total="tableData.length"
              @current-change="handleCurrentChange"
              :current-page="currentPage"
              :page-size="pageSize"
              style="text-align: center">
      </el-pagination>
    </div>
  </div>
</template>
<script>
  export default {
    name: "fenye.vue",
    data() {
      return {
        currentPage: '1', //当前页 刷新后默认显示第一页
        pageSize: '6', //每一页显示的数据量 此处每页显示6条数据
        //假数据
        tableData: [
          {
            date: '2016-05-02',
            name: '橘右京',
            job: '刺客',
            address: '上海市普陀区金沙江路 1518'
          },
          {
            date: '2016-05-03',
            name: '娜可露露',
            job: '刺客',
            address: '上海市普陀区金沙江路 1517'
          },
          {
            date: '2016-05-04',
            name: '鲁班七号',
            job: '射手',
            address: '上海市普陀区金沙江路 1519'
          },
          {
            date: '2016-05-05',
            name: '云中君',
            job: '刺客',
            address: '上海市普陀区金沙江路 1516'
          },
          {
            date: '2016-05-06',
            name: '干将莫邪',
            job: '法师',
            address: '上海市普陀区金沙江路 1516'
          },
          {
            date: '2016-05-07',
            name: '不知火舞',
            job: '法师',
            address: '上海市普陀区金沙江路 1516'
          },
          {
            date: '2016-05-08',
            name: '沈梦溪',
            job: '法师',
            address: '上海市普陀区金沙江路 1516'
          },
          {
            date: '2016-05-09',
            name: '百里守约',
            job: '刺客',
            address: '上海市普陀区金沙江路 1516'
          },
          {
            date: '2016-05-10',
            name: '马可波罗',
            job: '射手',
            address: '上海市普陀区金沙江路 1516'
          },
          {
            date: '2016-05-11',
            name: '孙尚香',
            job: '射手',
            address: '上海市普陀区金沙江路 1516'
          },
          {
            date: '2016-05-12',
            name: '赵云',
            job: '刺客',
            address: '上海市普陀区金沙江路 1516'
          },
          {
            date: '2016-05-13',
            name: '钟无艳',
            job: '战士',
            address: '上海市普陀区金沙江路 1516'
          },
          {
            date: '2016-05-14',
            name: '杨玉环',
            job: '法师',
            address: '上海市普陀区金沙江路 1516'
          },
          {
            date: '2016-05-15',
            name: '鲁班大师',
            job: '辅助',
            address: '上海市普陀区金沙江路 1516'
          },
        ],
      }
    },
    methods: {
      //点击按钮切换页面
      handleCurrentChange(currentPage) {
        this.currentPage = currentPage; //每次点击分页按钮,当前页发生变化
        // console.log(this.currentPage);
      },
    },
    mounted() {
    }
  }
</script>
<style scoped>
  .paging {
    width: 1000px;
    height: 500px;
    margin: 100px auto;
  }
  .data {
    width: 98%;
    height: 340px;
    border: 2px solid #cccccc;
    margin: 10px auto;
    text-align: center;
  }
</style>

相关文章
|
25天前
|
存储 监控 安全
前端框架的数据驱动方式如何保证数据的安全性?
总之,前端框架的数据驱动方式需要综合运用多种手段来保证数据的安全性。从传输、存储、访问控制到防范攻击等各个方面进行全面考虑和实施,以确保用户数据的安全可靠。同时,不断加强安全管理和技术创新,以应对不断变化的安全挑战。
99 60
|
2月前
|
JSON 前端开发 Java
震惊!图文并茂——Java后端如何响应不同格式的数据给前端(带源码)
文章介绍了Java后端如何使用Spring Boot框架响应不同格式的数据给前端,包括返回静态页面、数据、HTML代码片段、JSON对象、设置状态码和响应的Header。
158 1
震惊!图文并茂——Java后端如何响应不同格式的数据给前端(带源码)
|
2月前
|
监控 JavaScript 前端开发
前端的混合之路Meteor篇(六):发布订阅示例代码及如何将Meteor的响应数据映射到vue3的reactive系统
本文介绍了 Meteor 3.0 中的发布-订阅模型,详细讲解了如何在服务器端通过 `Meteor.publish` 发布数据,包括简单发布和自定义发布。客户端则通过 `Meteor.subscribe` 订阅数据,并使用 MiniMongo 实现实时数据同步。此外,还展示了如何在 Vue 3 中将 MiniMongo 的 `cursor` 转化为响应式数组,实现数据的自动更新。
|
2月前
|
JSON 分布式计算 前端开发
前端的全栈之路Meteor篇(七):轻量的NoSql分布式数据协议同步协议DDP深度剖析
本文深入探讨了DDP(Distributed Data Protocol)协议,这是一种在Meteor框架中广泛使用的发布/订阅协议,支持实时数据同步。文章详细介绍了DDP的主要特点、消息类型、协议流程及其在Meteor中的应用,包括实时数据同步、用户界面响应、分布式计算、多客户端协作和离线支持等。通过学习DDP,开发者可以构建响应迅速、适应性强的现代Web应用。
|
2月前
|
JavaScript 前端开发 Python
django接收前端vue传输的formData图片数据
django接收前端vue传输的formData图片数据
60 4
|
2月前
|
存储 前端开发 Java
验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)
本文介绍了使用Kaptcha插件在SpringBoot项目中实现验证码的生成和验证,包括后端生成验证码、前端展示以及通过session进行验证码校验的完整前后端代码和配置过程。
246 0
验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)
|
2月前
|
NoSQL 前端开发 MongoDB
前端的全栈之路Meteor篇(三):运行在浏览器端的NoSQL数据库副本-MiniMongo介绍及其前后端数据实时同步示例
MiniMongo 是 Meteor 框架中的客户端数据库组件,模拟了 MongoDB 的核心功能,允许前端开发者使用类似 MongoDB 的 API 进行数据操作。通过 Meteor 的数据同步机制,MiniMongo 与服务器端的 MongoDB 实现实时数据同步,确保数据一致性,支持发布/订阅模型和响应式数据源,适用于实时聊天、项目管理和协作工具等应用场景。
|
2月前
|
存储 前端开发 API
前端开发中,Web Storage的存储数据的方法localstorage和sessionStorage的使用及区别
前端开发中,Web Storage的存储数据的方法localstorage和sessionStorage的使用及区别
112 0
|
3月前
|
JavaScript 前端开发
前端基础(十)_Dom自定义属性(带案例)
本文介绍了DOM自定义属性的概念和使用方法,并通过案例展示了如何使用自定义属性来控制多个列表项点击变色的独立状态。
51 0
前端基础(十)_Dom自定义属性(带案例)
|
2月前
|
前端开发 Java 数据库
springBoot:template engine&自定义一个mvc&后端给前端传数据&增删改查 (三)
本文介绍了如何自定义一个 MVC 框架,包括后端向前端传递数据、前后端代理配置、实现增删改查功能以及分页查询。详细展示了代码示例,从配置文件到控制器、服务层和数据访问层的实现,帮助开发者快速理解和应用。