当前位置:首页 > VUE

Vue和elementui实现分页

2026-01-21 15:30:44VUE

Vue 与 ElementUI 实现分页的方法

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

安装 ElementUI

确保项目中已安装 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 实现基础分页功能:

<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 属性可以自定义分页组件的布局。例如:

Vue和elementui实现分页

<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 组件中定义数据属性,包括原始数据列表、搜索关键词、分页相关参数: data() { return { originalLi…

vue实现下拉分页思想

vue实现下拉分页思想

实现下拉分页的基本思想 下拉分页(Infinite Scroll)是一种常见的分页加载方式,当用户滚动到页面底部时自动加载下一页数据。Vue 中可以通过监听滚动事件或使用第三方库实现。 监听滚动事件…

jquery 分页

jquery 分页

实现 jQuery 分页的方法 客户端分页实现 使用 jQuery 实现客户端分页的核心思路是通过 JavaScript 控制数据的显示与隐藏。假设有一个包含数据的 HTML 列表或表格: // 分…

Vue 实现左右滑动

Vue 实现左右滑动

Vue 实现左右滑动的方法 使用 touch 事件监听 通过监听 touchstart、touchmove 和 touchend 事件实现基础滑动逻辑。在 Vue 组件中声明这些事件处理函数,计算滑动…

Vue全局loading实现

Vue全局loading实现

Vue全局Loading的实现方法 使用Vue插件封装全局Loading组件 创建一个独立的Loading组件,通过Vue插件机制注册为全局组件或方法。 <template> &…

vue实现滚动分页

vue实现滚动分页

实现滚动分页的基本思路 滚动分页(Infinite Scroll)是一种常见的前端分页加载方式,当用户滚动到页面底部时自动加载下一页数据。Vue 结合现代前端工具可以轻松实现这一功能。 监听滚动事件…