当前位置:首页 > VUE

vue elementui 分页的实现

2026-01-20 14:46:36VUE

Vue + ElementUI 分页实现方法

安装与引入

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

npm install element-ui -S

main.js 中全局引入:

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

基础分页组件

在模板中使用 <el-pagination> 组件:

<template>
  <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>
</template>

数据绑定与方法

在脚本中定义分页相关数据和方法:

<script>
export default {
  data() {
    return {
      currentPage: 1,
      pageSize: 10,
      total: 0,
      tableData: []
    };
  },
  methods: {
    handleSizeChange(val) {
      this.pageSize = val;
      this.fetchData();
    },
    handleCurrentChange(val) {
      this.currentPage = val;
      this.fetchData();
    },
    fetchData() {
      // 模拟API请求
      const mockData = Array.from({ length: 100 }, (_, i) => ({ id: i + 1 }));
      this.total = mockData.length;
      this.tableData = mockData.slice(
        (this.currentPage - 1) * this.pageSize,
        this.currentPage * this.pageSize
      );
    }
  },
  mounted() {
    this.fetchData();
  }
};
</script>

结合表格使用

分页通常与表格配合使用:

<template>
  <el-table :data="tableData" border style="width: 100%">
    <el-table-column prop="id" label="ID"></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>
</template>

自定义分页样式

通过 layout 属性可调整显示内容:

  • total:总条数
  • sizes:每页条数选择器
  • prev:上一页按钮
  • pager:页码按钮
  • next:下一页按钮
  • jumper:页码跳转输入框

远程分页实现

与后端API交互时,通常传递分页参数:

vue elementui 分页的实现

fetchData() {
  axios.get('/api/data', {
    params: {
      page: this.currentPage,
      size: this.pageSize
    }
  }).then(response => {
    this.tableData = response.data.list;
    this.total = response.data.total;
  });
}

注意事项

  • current-pagepage-size 需使用 .sync 修饰符(Vue 2.x)或 v-model(Vue 3.x)实现双向绑定
  • 分页组件的 total 属性必须正确设置,否则分页计算会出错
  • 远程分页时需确保后端返回的数据包含总条数信息

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

相关文章

vue无限菜单怎么实现

vue无限菜单怎么实现

实现 Vue 无限菜单的方法 递归组件实现嵌套菜单 使用 Vue 的递归组件特性可以轻松实现无限级嵌套菜单。通过组件调用自身的方式处理嵌套数据。 <template> <ul&…

vue实现一个tab栏

vue实现一个tab栏

Vue 实现 Tab 栏 基础实现(选项式 API) <template> <div class="tab-container"> <div class="t…

vue实现素材

vue实现素材

Vue 实现素材的方法 使用 Vue 组件管理素材 在 Vue 项目中,可以通过组件化的方式管理素材。创建一个专门的组件来加载和显示素材,例如图片、视频或音频文件。组件可以接收素材的路径或 URL 作…

vue 实现筛选功能

vue 实现筛选功能

实现筛选功能的基本思路 在Vue中实现筛选功能通常涉及以下几个核心步骤:数据绑定、筛选逻辑处理、结果展示。以下是具体实现方法。 数据准备 准备需要筛选的数据源,通常是一个数组,可以存储在Vue组件的…

vue实现快递查询

vue实现快递查询

实现思路 通过调用第三方快递查询API接口,结合Vue.js框架实现快递单号查询功能。需要用户输入快递单号和选择快递公司,点击查询后显示物流信息。 准备工作 注册快递查询API服务(如快递100、聚…

vue实现审核功能

vue实现审核功能

实现审核功能的基本思路 审核功能通常涉及状态管理、权限控制和操作记录。Vue中可以通过组件化设计、状态管理库(如Vuex或Pinia)和后端API配合实现。 审核状态管理 使用Vuex或Pinia存…