当前位置:首页 > VUE

Vue和elementui实现分页

2026-01-21 15:30:44VUE

Vue 与 ElementUI 实现分页的方法

在 Vue 项目中结合 ElementUI 实现分页功能,可以通过以下步骤完成。ElementUI 提供了 el-pagination 组件,支持多种分页场景。

安装 ElementUI

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

Vue和elementui实现分页

npm install element-ui

main.js 中引入 ElementUI:

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

Vue.use(ElementUI);

基本分页实现

在 Vue 组件中使用 el-pagination 实现基础分页功能:

Vue和elementui实现分页

<template>
  <div>
    <!-- 表格数据展示 -->
    <el-table :data="currentPageData" border>
      <el-table-column prop="name" label="姓名"></el-table-column>
      <el-table-column prop="age" 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: [], // 所有数据
      currentPage: 1, // 当前页码
      pageSize: 10,   // 每页显示条数
      total: 0        // 总数据量
    };
  },
  computed: {
    // 计算当前页显示的数据
    currentPageData() {
      const start = (this.currentPage - 1) * this.pageSize;
      const end = start + this.pageSize;
      return this.tableData.slice(start, end);
    }
  },
  methods: {
    // 每页条数变化时触发
    handleSizeChange(val) {
      this.pageSize = val;
    },
    // 当前页码变化时触发
    handleCurrentChange(val) {
      this.currentPage = val;
    },
    // 模拟获取数据
    fetchData() {
      // 假设从接口获取数据
      this.tableData = [
        { name: '张三', age: 20 },
        { name: '李四', age: 25 },
        // 更多数据...
      ];
      this.total = this.tableData.length;
    }
  },
  mounted() {
    this.fetchData();
  }
};
</script>

结合后端分页

实际项目中,分页通常需要后端接口支持。以下是结合后端 API 的实现方式:

<template>
  <div>
    <el-table :data="tableData" border>
      <el-table-column prop="name" label="姓名"></el-table-column>
      <el-table-column prop="age" 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: [],
      currentPage: 1,
      pageSize: 10,
      total: 0
    };
  },
  methods: {
    handleSizeChange(val) {
      this.pageSize = val;
      this.fetchData();
    },
    handleCurrentChange(val) {
      this.currentPage = val;
      this.fetchData();
    },
    fetchData() {
      // 模拟 API 请求参数
      const params = {
        page: this.currentPage,
        size: this.pageSize
      };

      // 实际项目中替换为 axios 请求
      // axios.get('/api/data', { params }).then(response => {
      //   this.tableData = response.data.list;
      //   this.total = response.data.total;
      // });

      // 模拟数据
      setTimeout(() => {
        this.tableData = [
          { name: '张三', age: 20 },
          { name: '李四', age: 25 },
          // 更多数据...
        ];
        this.total = 100; // 假设总数据量为 100
      }, 300);
    }
  },
  mounted() {
    this.fetchData();
  }
};
</script>

自定义分页样式

通过 layout 属性可以自定义分页组件的布局。例如:

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

分页事件说明

  • size-change:每页条数变化时触发,参数为新条数。
  • current-change:当前页码变化时触发,参数为新页码。
  • prev-click:点击上一页按钮时触发(仅在 prev 按钮被点击时生效)。
  • next-click:点击下一页按钮时触发(仅在 next 按钮被点击时生效)。

通过以上方法,可以灵活实现 Vue 与 ElementUI 的分页功能,满足前端分页或后端分页的需求。

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

相关文章

利用Vue实现

利用Vue实现

使用Vue实现的基本步骤 安装Vue.js 通过npm或CDN引入Vue.js。npm安装命令:npm install vue。CDN引入方式:<script src="https://cdn.…

vue实现分页条数

vue实现分页条数

实现分页条数的方法 在Vue中实现分页条数功能,通常需要结合分页组件和数据请求逻辑。以下是几种常见的实现方式: 使用Element UI的分页组件 Element UI提供了现成的分页组件,可…

Vue查看全文实现

Vue查看全文实现

Vue 查看全文实现方法 使用 v-show 或 v-if 控制显示 通过 v-show 或 v-if 指令控制文本的显示与隐藏。v-show 通过 CSS 的 display 属性切换,适合频繁切换…

分页用vue实现

分页用vue实现

分页用 Vue 实现 在 Vue 中实现分页功能通常需要结合数据管理和 UI 组件。以下是几种常见的方法: 使用 Vue 组件库的分页组件 许多 Vue UI 组件库(如 Element UI、Va…

Vue实现postMessage

Vue实现postMessage

Vue 中使用 postMessage 进行跨窗口通信 在 Vue 中使用 postMessage 可以实现跨窗口通信,适用于不同窗口或 iframe 之间的数据传递。以下是实现方法: 发送…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以…