当前位置:首页 > 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 中实现扫描二维码功能,可以通过第三方库或原生 API 完成。以下是两种常见方法: 使用 vue-qrcode-reader 库 vue-qrcode-rea…

vue实现app

vue实现app

Vue 实现 App 的常见方法 使用 Vue 开发移动端 App 主要有两种主流方案:混合开发(Hybrid)和原生渲染。以下是具体实现方式和工具链: 混合开发方案(WebView 嵌入) 通过…

vue 实现权限

vue 实现权限

Vue 实现权限控制的方法 在 Vue 项目中实现权限控制通常涉及前端路由、组件和按钮级别的权限管理。以下是几种常见的实现方式: 路由权限控制 通过路由守卫实现权限验证,过滤用户无权访问的路由:…

vue el 实现

vue el 实现

Vue 中使用 Element UI (el) 的实现方法 Element UI 是一个基于 Vue 的组件库,提供丰富的 UI 组件,常用于快速构建企业级中后台产品。以下介绍 Vue 项目中集成和使…

vue实现逻辑

vue实现逻辑

Vue 实现逻辑的核心概念 Vue.js 是一个渐进式 JavaScript 框架,其核心逻辑围绕数据驱动和组件化开发。通过响应式系统、虚拟 DOM 和组件生命周期等机制,Vue 实现了高效的前端开发…

vue  实现tab

vue 实现tab

实现 Tab 切换功能 在 Vue 中实现 Tab 切换功能可以通过动态组件或条件渲染完成。以下是两种常见方法: 使用 v-if 或 v-show 实现条件渲染 通过绑定 currentTab 变量…