当前位置:首页 > VUE

vue的element实现分页

2026-02-25 01:34:45VUE

使用 Element UI 实现分页

Element UI 提供了 el-pagination 组件,可以方便地实现分页功能。以下是一个完整的分页实现示例,包括前端和后端交互。

安装 Element UI

确保项目中已安装 Element UI。如果未安装,可以通过以下命令安装:

vue的element实现分页

npm install element-ui

引入 Element UI

main.js 中全局引入 Element UI:

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

Vue.use(ElementUI);

分页组件示例

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

vue的element实现分页

<template>
  <div>
    <el-table :data="tableData" border style="width: 100%">
      <el-table-column prop="id" label="ID" width="180"></el-table-column>
      <el-table-column prop="name" label="Name" width="180"></el-table-column>
      <el-table-column prop="address" label="Address"></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
    };
  },
  created() {
    this.fetchData();
  },
  methods: {
    fetchData() {
      // 模拟 API 请求
      const params = {
        page: this.currentPage,
        size: this.pageSize
      };
      // 实际项目中替换为真实的 API 调用
      this.$axios.get('/api/data', { params }).then(response => {
        this.tableData = response.data.list;
        this.total = response.data.total;
      });
    },
    handleSizeChange(val) {
      this.pageSize = val;
      this.fetchData();
    },
    handleCurrentChange(val) {
      this.currentPage = val;
      this.fetchData();
    }
  }
};
</script>

后端 API 实现

后端需要根据前端传递的 pagesize 参数返回分页数据。以下是一个简单的 Node.js Express 示例:

const express = require('express');
const app = express();

app.get('/api/data', (req, res) => {
  const { page = 1, size = 10 } = req.query;
  const offset = (page - 1) * size;

  // 模拟数据库查询
  const total = 100; // 总数据量
  const list = Array.from({ length: size }, (_, i) => ({
    id: offset + i + 1,
    name: `Item ${offset + i + 1}`,
    address: `Address ${offset + i + 1}`
  }));

  res.json({
    list,
    total
  });
});

app.listen(3000, () => console.log('Server running on port 3000'));

分页属性说明

el-pagination 组件支持以下常用属性:

  • current-page:当前页码,支持 .sync 修饰符。
  • page-size:每页显示条目数。
  • total:总条目数。
  • page-sizes:每页显示个数选择器的选项设置。
  • layout:组件布局,子组件名用逗号分隔。

事件说明

  • size-change:每页条数改变时触发。
  • current-change:当前页改变时触发。

通过以上步骤,可以快速在 Vue 项目中实现分页功能。

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

相关文章

vue 实现列表

vue 实现列表

Vue 实现列表的方法 在 Vue 中实现列表通常使用 v-for 指令,结合数组或对象数据渲染动态列表。以下是几种常见的实现方式: 基础列表渲染 使用 v-for 指令遍历数组,渲染列表项。ite…

vue实现开关

vue实现开关

Vue 实现开关组件的方法 使用原生HTML和Vue数据绑定 通过v-model绑定复选框的checked状态,结合CSS样式实现开关效果: <template> <label…

vue实现tap

vue实现tap

Vue 实现 Tap 事件 在移动端开发中,Tap 事件比 Click 事件更常用,因为 Click 事件有 300ms 延迟。以下是几种在 Vue 中实现 Tap 事件的方法。 使用第三方库 安装…

vue 实现异步加载

vue 实现异步加载

Vue 实现异步加载的方法 使用动态 import 实现组件懒加载 在 Vue 中可以通过动态 import() 语法实现组件的异步加载,这会使得组件在需要时才被加载,减少初始加载时间。 const…

vue实现rem适配

vue实现rem适配

Vue 项目中实现 REM 适配 REM(Root EM)是一种基于根元素(html)字体大小的相对单位,常用于移动端适配。以下是在 Vue 项目中实现 REM 适配的详细方法。 安装 postcs…

vue实现border样式

vue实现border样式

实现边框样式的方法 在Vue中实现边框样式可以通过多种方式完成,包括内联样式、CSS类绑定、动态样式绑定等。以下是几种常见的方法: 内联样式绑定 通过style属性直接绑定样式对象,适用于简单的边…