当前位置:首页 > VUE

vue elementui实现分页

2026-01-15 02:12:56VUE

Vue + ElementUI 分页实现方法

安装与引入

确保已安装 ElementUI,可通过 npm 或 yarn 安装:

npm install element-ui

main.js 中全局引入:

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

Vue.use(ElementUI);

基础分页组件

使用 <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, 50]"
      :page-size="pageSize"
      layout="total, sizes, prev, pager, next, jumper"
      :total="total">
    </el-pagination>
  </div>
</template>

数据与逻辑处理

在 Vue 实例中定义分页相关数据和方法:

<script>
export default {
  data() {
    return {
      tableData: [],       // 原始数据
      currentPage: 1,      // 当前页码
      pageSize: 10,        // 每页条数
      total: 0,            // 总数据量
      currentPageData: []  // 当前页数据
    };
  },
  methods: {
    // 获取分页数据(模拟API请求)
    fetchData() {
      // 模拟异步请求
      setTimeout(() => {
        this.tableData = Array.from({length: 100}, (_, i) => ({
          name: `用户${i+1}`,
          age: Math.floor(Math.random() * 30) + 20
        }));
        this.total = this.tableData.length;
        this.updatePageData();
      }, 500);
    },

    // 更新当前页数据
    updatePageData() {
      const start = (this.currentPage - 1) * this.pageSize;
      const end = start + this.pageSize;
      this.currentPageData = this.tableData.slice(start, end);
    },

    // 每页条数变化
    handleSizeChange(val) {
      this.pageSize = val;
      this.updatePageData();
    },

    // 页码变化
    handleCurrentChange(val) {
      this.currentPage = val;
      this.updatePageData();
    }
  },
  mounted() {
    this.fetchData();
  }
};
</script>

后端分页对接

实际项目中通常需要对接后端分页接口:

vue elementui实现分页

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);
    }
  }
}

样式自定义

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

<style scoped>
.el-pagination {
  margin-top: 20px;
  text-align: right;
}
</style>

功能扩展

实现带搜索的分页:

<el-input v-model="searchQuery" placeholder="搜索..." @change="handleSearch"></el-input>
methods: {
  handleSearch() {
    this.currentPage = 1;
    this.fetchData();
  }
}

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

相关文章

vue实现活动倒计时

vue实现活动倒计时

实现活动倒计时的基本思路 在Vue中实现活动倒计时通常需要获取当前时间与活动结束时间的差值,并将其转换为天、小时、分钟、秒的格式展示。通过定时器每秒更新显示的时间。 定义倒计时数据 在Vue组件的d…

vue实现帖子

vue实现帖子

Vue 实现帖子功能 使用 Vue 实现帖子功能需要结合前端框架和后端数据交互,以下是实现的关键步骤和代码示例。 帖子列表展示 创建帖子列表组件,使用 v-for 渲染帖子数据,通过 axios 获…

vue 实现豆瓣

vue 实现豆瓣

以下是基于 Vue 实现豆瓣电影类功能的实现方案,涵盖核心模块和技术要点: 数据获取与 API 调用 使用豆瓣开放 API(需注意调用频率限制)或第三方代理接口 推荐 axios 进行异步请求,配合…

vue实现返回

vue实现返回

返回按钮功能实现 在Vue中实现返回功能通常有两种方式:使用浏览器历史记录的history.back()或结合Vue Router进行编程式导航。以下是具体实现方法: 使用浏览器API metho…

vue实现全屏

vue实现全屏

Vue 实现全屏功能的方法 在 Vue 中实现全屏功能可以通过浏览器提供的 Fullscreen API 来实现。以下是几种常见的实现方式: 使用原生 Fullscreen API 通过调用 doc…

vue实现路由

vue实现路由

Vue 路由的实现方法 Vue 路由可以通过 Vue Router 库来实现,Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue Router 通…