​​​​​​​基于el-table和el-pagination实现数据的分页效果

 更新时间:2022年08月12日 16:24:36   作者:Developer 小马  
本文主要介绍了​​​​​​​基于el-table和el-pagination实现数据的分页效果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

首先使用 el-table(表格) 和 el-pagination(分页) 组件需要 npm 下载 Element UI 组件库,下载安装方式参见官网:https://element.eleme.cn/#/zh-CN/component/installation

一、案例效果

(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>
参数说明
data显示的数据
stripe是否以斑马纹显示
prop对应列内容的字段名,也可以使用 property 属性
label显示的标题

注意此处在选择要显示的数据时也需要对其进行截取操作,否则会直接全部显示。我们使用的是 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>
参数说明
background是否为分页按钮添加背景色
layout

组件布局,子组件名用逗号分隔;prev(上一页按钮)、pager(页码)、nex(下一页按钮)、jumper(跳转)、->(空格)、total(数据总条目数)

current-changecurrentPage 改变时会触发
current-page当前页数
page-sizes每页显示个数选择器的选项设置

三、完整代码+详细注释

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

到此这篇关于基于el-table和el-pagination实现数据的分页效果的文章就介绍到这了,更多相关el-table和el-pagination分页内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue+F2生成折线图的方法

    vue+F2生成折线图的方法

    这篇文章主要为大家详细介绍了vue+F2生成折线图的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Vue动态引用json数据的两种方式

    Vue动态引用json数据的两种方式

    在 Vue 项目中引用 JSON 文件非常简单,尤其是当文件内容是一个数组时,本文给大家介绍了Vue动态引用json数据的两种方式,并有相关的代码示例供大家参考,需要的朋友可以参考下
    2025-04-04
  • vue2.0全局组件之pdf详解

    vue2.0全局组件之pdf详解

    这篇文章主要为大家详细绍了vue2.0全局组件之pdf的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • 使用宝塔面板中Nginx部署前端Vue项目完整步骤

    使用宝塔面板中Nginx部署前端Vue项目完整步骤

    在Kubernetes(K8S)部署前端Vue项目通常会涉及到使用Nginx作为静态资源服务器的一个重要部分,这篇文章主要给大家介绍了关于使用宝塔面板中Nginx部署前端Vue项目的相关资料,需要的朋友可以参考下
    2024-10-10
  • vue2.x中h函数(createElement)与vue3中的h函数详解

    vue2.x中h函数(createElement)与vue3中的h函数详解

    h函数本质就是createElement(),h函数其实是createVNode的语法糖,返回的就是一个Js普通对象,下面这篇文章主要给大家介绍了关于vue2.x中h函数(createElement)与vue3中h函数的相关资料,需要的朋友可以参考下
    2022-12-12
  • JavaScript获取echart曲线上任意点位的值详解

    JavaScript获取echart曲线上任意点位的值详解

    这篇文章主要为大家介绍了JavaScript获取echart曲线上任意点位的值详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • vue3父组件使用ref获取子组件的属性和方法

    vue3父组件使用ref获取子组件的属性和方法

    在vue3中父组件访问子组件中的属性和方法是需要借助于ref,苏哦一本文小编给大家介绍了vue3父组件如何使用ref获取获取子组件的属性和方法,文中详细的代码讲解,需要的朋友可以参考下
    2023-11-11
  • Vue中对watch的理解(关键是immediate和deep属性)

    Vue中对watch的理解(关键是immediate和deep属性)

    watch侦听器,是Vue实例的一个属性,是用来响应数据的变化,需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的,这篇文章主要介绍了Vue中对watch的理解,需要的朋友可以参考下
    2022-11-11
  • Vue条件渲染与列表渲染

    Vue条件渲染与列表渲染

    这篇文章主要介绍了Vue条件渲染与列表渲染,条件渲染包括v-if、v-show等内容,文章对条件渲染及列表渲染介绍详细,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • Vue实现预览docx/xlsx/pdf等类型文件功能

    Vue实现预览docx/xlsx/pdf等类型文件功能

    这篇文章主要介绍了如何在Vue中实现docx/xlsx/pdf等类型文件预览功能,在实现过程中,需要注意文件的格式和转换方式,以及插件和组件的使用方法和注意事项,需要的朋友可以参考下
    2023-05-05

最新评论