当前位置:首页 > VUE

vue elementui实现分页

2026-02-11 05:14:14VUE

使用 Vue 和 Element UI 实现分页

Element UI 提供了 el-pagination 组件,可以方便地实现分页功能。以下是一个完整的实现示例:

安装 Element UI

确保项目中已安装 Element UI:

npm install element-ui -S

引入 Element UI

main.js 中全局引入:

import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

Vue.use(ElementUI)

实现分页组件

在 Vue 组件中使用 el-pagination

<template>
  <div>
    <!-- 表格数据 -->
    <el-table :data="currentTableData" border>
      <el-table-column prop="date" label="日期"></el-table-column>
      <el-table-column prop="name" label="姓名"></el-table-column>
      <el-table-column prop="address" label="地址"></el-table-column>
    </el-table>

    <!-- 分页 -->
    <el-pagination
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
      :current-page="currentPage"
      :page-sizes="[10, 20, 30, 40]"
      :page-size="pageSize"
      layout="total, sizes, prev, pager, next, jumper"
      :total="total">
    </el-pagination>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: [], // 全部数据
      currentTableData: [], // 当前页数据
      currentPage: 1, // 当前页码
      pageSize: 10, // 每页显示条数
      total: 0 // 总数据量
    }
  },
  created() {
    this.fetchData()
  },
  methods: {
    fetchData() {
      // 模拟从接口获取数据
      setTimeout(() => {
        this.tableData = [
          { date: '2023-01-01', name: '张三', address: '北京市' },
          { date: '2023-01-02', name: '李四', address: '上海市' },
          // 更多数据...
        ]
        this.total = this.tableData.length
        this.updateCurrentTableData()
      }, 500)
    },
    updateCurrentTableData() {
      // 根据当前页码和每页条数更新显示的数据
      const start = (this.currentPage - 1) * this.pageSize
      const end = start + this.pageSize
      this.currentTableData = this.tableData.slice(start, end)
    },
    handleSizeChange(val) {
      this.pageSize = val
      this.updateCurrentTableData()
    },
    handleCurrentChange(val) {
      this.currentPage = val
      this.updateCurrentTableData()
    }
  }
}
</script>

关键点说明

  • current-page 绑定当前页码
  • page-size 绑定每页显示条数
  • total 绑定总数据量
  • @size-change 监听每页条数变化
  • @current-change 监听页码变化
  • layout 定义分页器布局

后端分页实现

如果是后端分页,只需修改 fetchData 方法:

fetchData() {
  const params = {
    page: this.currentPage,
    size: this.pageSize
  }

  axios.get('/api/data', { params }).then(res => {
    this.currentTableData = res.data.list
    this.total = res.data.total
  })
}

样式调整

可以通过 CSS 调整分页组件样式:

vue elementui实现分页

.el-pagination {
  margin-top: 20px;
  text-align: right;
}

以上实现提供了完整的前端分页功能,同时也说明了如何与后端接口配合实现真正的分页查询。

标签: 分页vue
分享给朋友:

相关文章

vue实现盖章

vue实现盖章

Vue 实现盖章功能 在Vue中实现盖章功能通常涉及前端UI交互,通过Canvas或SVG绘制印章,并允许用户拖拽或点击放置印章。以下是具体实现方法: 使用Canvas绘制印章 通过HTML5的Ca…

vue实现handsontable

vue实现handsontable

Vue 中实现 Handsontable 要在 Vue 项目中集成 Handsontable,可以使用官方提供的 @handsontable/vue 封装库。以下是一个完整的实现步骤。 安装依赖 确…

vue实现订单

vue实现订单

Vue 实现订单功能 订单数据结构设计 订单数据通常包含以下字段: order: { id: String, // 订单ID userId: String,…

vue实现list

vue实现list

Vue 实现列表渲染 在 Vue 中,可以使用 v-for 指令来渲染列表。v-for 指令基于一个数组或对象来渲染一个列表,可以遍历数组或对象的属性。 基本列表渲染 <template>…

vue实现mui

vue实现mui

使用 Vue 实现 MUI(Material-UI)风格的界面 Vue 本身不直接提供 MUI(Material Design)组件,但可以通过集成第三方库或手动实现来达到类似效果。以下是几种常见方法…

vue实现日历

vue实现日历

Vue 实现日历的基本方法 使用 Vue 实现日历可以通过自定义组件或借助第三方库完成。以下是两种常见实现方式: 自定义日历组件 创建基于 Vue 的日历组件需要处理日期计算和渲染逻辑。核心是生成当…