从零开始一步一步教你使用element ui table 做前端分页和后端分页

主要是自己这段时间用vue+element ui的一些经验所得吧,适合刚入手的小白,话不多说,直接上干货......

这里为了直观,从开始一步一步来操作,只要一步一步看肯定能学会,加油,有问题可以咨询QQ1669819167

全天在线,欢迎打扰!抱拳ing!

项目中引入element ui 就不用说了吧......


 

目录

一、用到的技术栈

二、数据展示

三、前端分页



一、用到的技术栈

  1. vue会用就行了:https://cn.vuejs.org/v2/guide/
  2. 先上element ui的官网:https://element.eleme.cn/#/zh-CN/component/installation
  3. axios,这里不涉及二次封装,直接用封装好的axios......

二、数据展示

1.demo.vue

<template>
  <div class="app-container"></div>
</template>
<script>
export default {
  data() {
    return {}
  },
  created() {},
  methods: {}
}
</script>
<style lang="scss" scoped>
</style>

 

2. 添加table

<template>
  <div class="app-container">
    <template>
      <el-table :data="tableData" style="width: 100%">
        <el-table-column prop="date" label="日期" width="180"></el-table-column>
        <el-table-column prop="name" label="姓名" width="180"></el-table-column>
        <el-table-column prop="address" label="地址"></el-table-column>
      </el-table>
    </template>
  </div>
</template>

3.模拟数据,把tableData放在return里面

  // 拿到的数组
      tableData: [
        {
          date: '2016-05-02', //data,name,address  要和html里面的 prop 一一对应
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        },
        {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1517 弄'
        },
        {
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1519 弄'
        },
        {
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        }
      ]
    }

这个时候已经显示出来了,由于后面分页我们要把数据多造一点,因为太占空间,所以文章里我就不加了,看效果!

一般我们数据太多一个页面展示不下就会考虑到分页,

然后分页又分为纯前端分页,和前后端分页,这里我们先了解第一种前端分页

三、前端分页

1.分页需要当前页数当前页显示的数据条数,以及重要的分页器,看代码!

分页器:

<template>
  <div class="app-container">
    <!-- table数据展示 -->
    <el-table :data="tableData" style="width: 100%">
      <el-table-column prop="date" label="日期" width="180"></el-table-column>
      <el-table-column prop="name" label="姓名" width="180"></el-table-column>
      <el-table-column prop="address" label="地址"></el-table-column>
    </el-table>
    <!-- 分页器 -->
    <div class="block">
      <el-pagination
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        :current-page="currentPage"
        :page-sizes="[5, 10, 20, 40]"
        :page-size="pageSize"
        layout="total, sizes, prev, pager, next, jumper"
        :total="tableData.length"
        background
      ></el-pagination>
    </div>
  </div>
</template>

当前页和当前页显示条数(在之前的return里面添加currentPage和pageSize)

    return {
      currentPage: 1, // 默认第1页
      pageSize: 5, // 默认显示5条
      // 拿到的数组
      tableData: [...]
    }

 这个时候分页,总条数都出来了,但是还不能用,效果图:

 

 

想要真正的分页还得加上一句代码,两个函数

tableData.slice((currentPage - 1) * pagesize, currentPage * pagesize)
    <!-- table数据展示 -->
    <el-table :data="tableData.slice((currentPage - 1) * pageSize, currentPage * pageSize)" 
     style="width: 100%">
      <el-table-column prop="date" label="日期" width="180"></el-table-column>
      <el-table-column prop="name" label="姓名" width="180"></el-table-column>
      <el-table-column prop="address" label="地址"></el-table-column>
    </el-table>

函数: 

methods: {
    // 初始页currentPage、初始每页数据数pageSize和数据data
    
    // 每页显示条数
    handleSizeChange(pageSize) {
      this.pageSize = pageSize
      console.log(this.pageSize) // 每页下拉显示数据
    },
    // 当前页
    handleCurrentChange(currentPage) {
      this.currentPage = currentPage
      console.log(this.currentPage)
    }
  }

前端分页完成,功能都实现了,就不一一演示,看效果图:

 

这是前端分页,要是有觉得有用的朋友,不妨留下个评论,或者有什么错误的地方欢迎指出来! 第二种的话,有时间再写吧

贴个总的代码:

<template>
  <div class="app-container">
    <!-- table数据展示 -->
    <el-table
      :data="tableData.slice((currentPage - 1) * pageSize, currentPage * pageSize)"
      style="width: 100%"
    >
      <el-table-column prop="date" label="日期" width="180"></el-table-column>
      <el-table-column prop="name" label="姓名" width="180"></el-table-column>
      <el-table-column prop="address" label="地址"></el-table-column>
    </el-table>
    <!-- 分页器 -->
    <div class="block">
      <el-pagination
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        background
        :current-page="currentPage"
        :page-sizes="[5, 10, 20, 40]"
        :page-size="pageSize"
        layout="total, sizes, prev, pager, next, jumper"
        :total="tableData.length"
      ></el-pagination>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      currentPage: 1, // 默认第1页
      pageSize: 5, // 默认显示5条
      totalSize: 0, // 默认总条数为0 这个无所谓,前端分页可以计算数组的length
      // 拿到的数组
      tableData: [
        {
          date: '2016-05-02', //data,name,address  要和html里面的 prop 一一对应
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        },
        {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1517 弄'
        },
        {
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1519 弄'
        },
        {
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        },
        {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1517 弄'
        },
        {
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1519 弄'
        },
        {
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        },
        {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1517 弄'
        },
        {
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1519 弄'
        },
        {
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        },
        {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1517 弄'
        },
        {
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1519 弄'
        },
        {
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        }
      ]
    }
  },
  created() {},
  methods: {
    // 初始页currentPage、初始每页数据数pageSize和数据data

    // 每页显示条数
    handleSizeChange(pageSize) {
      this.pageSize = pageSize
      console.log(this.pageSize) // 每页下拉显示数据
    },
    // 当前页
    handleCurrentChange(currentPage) {
      this.currentPage = currentPage
      console.log(this.currentPage)
    }
  }
}
</script>
<style lang="scss" scoped>
</style>

最后,用到的一些属性或者方法:

table,Pagination
  
  
  

 

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
element ui提供了一个内置的表格组件(el-table),可以帮助开发者创建数据展示的表格。在表格中对数据进行分页是很常见的需求,element ui也提供了相应的支持。 要实现element ui table分页功能,首先需要使用el-pagination组件来创建一个分页器。在el-table组件上添加一个v-bind:pagination属性,将分页器绑定到表格上。然后,通过设置el-table的属性项来配置分页功能,例如设置el-table的属性项v-bind:data,表示要展示的数据。可以从服务器端异步获取数据,也可以直接通过v-bind:data绑定本地的数据源。 在el-table上设置v-bind:page-size属性,表示每页显示的数据条数,并通过v-bind:current-page属性来设置当前所在页码。此外,还可以通过v-bind:total属性来设置数据总条数,用于计算总页数。 当分页器的页码或每页显示条数发生改变时,可以通过监听事件来获取新的数据然后更新到el-table中。可以监听el-table的@size-change事件和@current-change事件,分别表示每页显示条数和页码的变化。在事件处理函数中,可以修改v-bind:page-size和v-bind:current-page的值,并重新加载数据。 通过上述步骤,就可以实现element ui table分页功能了。这种分页方式非常方便,可以根据实际需求快速配置并展示数据。同时,element ui还提供了其他一些参数配置,例如可以设置显示的页码按钮数量、是否显示跳转到指定页码的输入框等,根据实际需求进行配置即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值