当前位置:首页 > VUE

vue elementui 分页的实现

2026-02-21 06:41:54VUE

实现 Vue ElementUI 分页功能

安装 ElementUI

确保项目中已安装 ElementUI。若未安装,可通过以下命令安装:

npm install element-ui -S

main.js 中引入 ElementUI 并注册:

vue elementui 分页的实现

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-pagination
      :current-page="currentPage"
      :page-size="pageSize"
      :total="total"
      layout="total, sizes, prev, pager, next, jumper"
      @current-change="handleCurrentChange"
      @size-change="handleSizeChange"
    />
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentPage: 1,
      pageSize: 10,
      total: 100
    };
  },
  methods: {
    handleCurrentChange(val) {
      this.currentPage = val;
      this.fetchData();
    },
    handleSizeChange(val) {
      this.pageSize = val;
      this.fetchData();
    },
    fetchData() {
      // 模拟 API 请求
      console.log(`请求页码: ${this.currentPage}, 每页条数: ${this.pageSize}`);
    }
  }
};
</script>

分页与表格联动

通常分页与表格数据结合使用:

vue elementui 分页的实现

<template>
  <div>
    <el-table :data="tableData" border>
      <el-table-column prop="date" label="日期"></el-table-column>
      <el-table-column prop="name" label="姓名"></el-table-column>
    </el-table>

    <el-pagination
      :current-page="currentPage"
      :page-size="pageSize"
      :total="total"
      layout="total, sizes, prev, pager, next, jumper"
      @current-change="handleCurrentChange"
      @size-change="handleSizeChange"
    />
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: [],
      currentPage: 1,
      pageSize: 10,
      total: 0
    };
  },
  created() {
    this.fetchData();
  },
  methods: {
    fetchData() {
      // 模拟 API 请求
      const mockData = [];
      for (let i = 0; i < this.pageSize; i++) {
        mockData.push({
          date: `2023-01-${this.currentPage}`,
          name: `用户 ${(this.currentPage - 1) * this.pageSize + i + 1}`
        });
      }
      this.tableData = mockData;
      this.total = 100; // 模拟总数据量
    },
    handleCurrentChange(val) {
      this.currentPage = val;
      this.fetchData();
    },
    handleSizeChange(val) {
      this.pageSize = val;
      this.fetchData();
    }
  }
};
</script>

后端分页对接

实际项目中需与后端 API 对接:

methods: {
  async fetchData() {
    try {
      const res = await axios.get('/api/data', {
        params: {
          page: this.currentPage,
          size: this.pageSize
        }
      });
      this.tableData = res.data.list;
      this.total = res.data.total;
    } catch (error) {
      console.error(error);
    }
  }
}

自定义分页样式

通过 layout 属性自定义分页组件显示内容:

<el-pagination
  layout="prev, pager, next"
  :total="50">
</el-pagination>

分页属性说明

  • current-page: 当前页码(需 .sync 修饰符或手动更新)
  • page-size: 每页显示条目数
  • total: 总条目数
  • page-sizes: 每页显示个数选择器的选项(如 [10, 20, 30]
  • layout: 组件布局(可选值包括 total/sizes/prev/pager/next/jumper

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

相关文章

vue实现https

vue实现https

Vue 中实现 HTTPS 的步骤 在 Vue 项目中实现 HTTPS 主要涉及开发环境配置和生产环境部署。以下是具体方法: 开发环境配置(Vue CLI 或 Vite) 使用 mkcert 生成…

vue 实现grid

vue 实现grid

在Vue中实现Grid布局可以通过多种方式完成,以下是几种常见的方法: 使用CSS Grid布局 CSS Grid是一种强大的布局系统,可以直接在Vue组件的样式中使用。以下是一个简单的示例:…

vue实现granfana

vue实现granfana

Vue 实现类似 Grafana 的仪表盘 要在 Vue 中实现类似 Grafana 的仪表盘功能,需要结合数据可视化库、状态管理和 UI 组件。以下是关键步骤和推荐工具: 数据可视化库 使用 E…

vue实现同步

vue实现同步

Vue 实现同步的方法 在 Vue 中实现同步操作通常涉及数据绑定、状态管理和异步操作的处理。以下是几种常见的方法: 使用计算属性(Computed Properties) 计算属性基于响应式依赖进…

vue插件实现

vue插件实现

Vue 插件实现方法 Vue 插件是一种向 Vue 应用程序添加全局功能的机制。插件可以包含全局指令、过滤器、混入、实例方法等。 插件的基本结构 一个 Vue 插件通常是一个对象或函数,需要暴露一个…

vue滚动实现

vue滚动实现

Vue 滚动实现方法 使用原生滚动 在 Vue 中可以通过 ref 获取 DOM 元素,调用原生滚动方法实现滚动效果。适用于简单场景。 <template> <div ref=…