当前位置:首页 > 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> 组件:

vue elementui 分页的实现

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

结合表格使用

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

vue elementui 分页的实现

<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交互时,通常传递分页参数:

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中实现多用户登录通常需要结合后端API完成身份验证,并通过前端路由、状态管理(如Vuex或Pinia)和本地存储(如localStorage)来管理用户会话。以下是关…

vue实现弹窗

vue实现弹窗

Vue 实现弹窗的常见方法 使用组件化方式封装弹窗 创建一个独立的弹窗组件(如 Modal.vue),通过 v-if 或 v-show 控制显示隐藏: <template> <…

vue实现slidetoggle

vue实现slidetoggle

Vue 实现 SlideToggle 效果 SlideToggle 是一种常见的交互效果,元素以滑动方式展开或收起。以下是几种实现方法: 使用 CSS Transition 和 v-show 通过…

vue实现 treegrid

vue实现 treegrid

Vue 实现 TreeGrid 的方法 使用现成组件库 Element UI、Ant Design Vue 等流行组件库提供了现成的 TreeTable/TreeGrid 组件,可直接使用。 Ele…

vue实现layout

vue实现layout

Vue 实现 Layout 布局的方法 在 Vue 中实现 Layout 布局通常涉及路由嵌套、组件化设计和动态渲染。以下是几种常见的实现方式: 使用嵌套路由 通过 Vue Router 的嵌套路由…

vue实现组件跟随

vue实现组件跟随

实现组件跟随的常见方法 使用CSS定位 通过CSS的position: fixed或position: absolute属性实现组件跟随。需要结合JavaScript计算目标元素的位置。 <t…