当前位置:首页 > VUE

vue iview实现分页

2026-01-18 16:17:19VUE

Vue + iView 实现分页

在 Vue 项目中结合 iView 组件库实现分页功能,可以通过 Page 组件轻松完成。以下是具体实现方法:

安装 iView 确保项目中已安装 iView,可以通过 npm 或 yarn 安装:

npm install view-design --save

引入 iViewmain.js 中全局引入 iView:

vue iview实现分页

import Vue from 'vue';
import ViewUI from 'view-design';
import 'view-design/dist/styles/iview.css';

Vue.use(ViewUI);

基本分页实现 在组件中使用 Page 组件,绑定当前页码 current 和总数据量 total

<template>
  <div>
    <Page :current="currentPage" :total="total" @on-change="handlePageChange" />
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentPage: 1,
      total: 100
    };
  },
  methods: {
    handlePageChange(page) {
      this.currentPage = page;
      // 触发数据加载逻辑
      this.loadData();
    },
    loadData() {
      // 根据 currentPage 请求数据
      console.log('加载页码:', this.currentPage);
    }
  }
};
</script>

结合表格分页 通常分页与表格数据一起使用,以下是完整示例:

vue iview实现分页

<template>
  <div>
    <Table :columns="columns" :data="tableData"></Table>
    <Page 
      :current="currentPage" 
      :total="total" 
      :page-size="pageSize"
      @on-change="handlePageChange"
      show-total
      show-elevator
    />
  </div>
</template>

<script>
export default {
  data() {
    return {
      columns: [
        { title: '姓名', key: 'name' },
        { title: '年龄', key: 'age' }
      ],
      tableData: [],
      currentPage: 1,
      total: 0,
      pageSize: 10
    };
  },
  created() {
    this.loadData();
  },
  methods: {
    handlePageChange(page) {
      this.currentPage = page;
      this.loadData();
    },
    async loadData() {
      // 模拟 API 请求
      const res = await mockApiRequest(this.currentPage, this.pageSize);
      this.tableData = res.data;
      this.total = res.total;
    }
  }
};

// 模拟 API 函数
function mockApiRequest(page, size) {
  return new Promise(resolve => {
    setTimeout(() => {
      const data = Array(size).fill().map((_, i) => ({
        name: `用户 ${(page - 1) * size + i + 1}`,
        age: Math.floor(Math.random() * 30) + 20
      }));
      resolve({ data, total: 100 });
    }, 300);
  });
}
</script>

自定义分页属性 iView 的 Page 组件支持多种自定义选项:

  • show-total: 显示总条数
  • show-elevator: 显示快速跳转
  • show-sizer: 显示每页条数选择器
  • page-size-opts: 自定义每页条数选项

示例:

<Page
  :current="currentPage"
  :total="total"
  :page-size="pageSize"
  :page-size-opts="[10, 20, 50]"
  @on-change="handlePageChange"
  @on-page-size-change="handlePageSizeChange"
  show-total
  show-elevator
  show-sizer
/>

注意事项

  1. 确保 total 值是总数据条数,而非总页数
  2. 分页变化时通常需要重新请求数据
  3. 后端 API 应支持分页参数(如 pagepageSize
  4. 对于大量数据,考虑添加加载状态提示

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

相关文章

vue实现共享屏幕

vue实现共享屏幕

共享屏幕的基本实现 在Vue中实现共享屏幕功能通常需要结合浏览器的getDisplayMedia API。以下是一个基础实现示例: <template> <div>…

vue单页面实现登录

vue单页面实现登录

实现登录功能的基本流程 在Vue单页面应用中实现登录功能,通常需要以下几个关键步骤: 创建登录表单组件 使用Vue的模板语法创建包含用户名和密码输入框的表单,并绑定数据到组件的data属性。 <…

vue实现微博发布动态

vue实现微博发布动态

使用Vue实现微博发布动态功能 创建Vue组件结构 新建一个WeiboPost.vue组件,包含文本框、图片上传和发布按钮: <template> <div class="we…

vue实现星星

vue实现星星

实现星星评分的Vue组件 使用Vue实现星星评分功能可以通过组件化方式完成,以下是一个完整的实现方案: 模板部分 <template> <div class="star-…

vue实现分屏

vue实现分屏

Vue 实现分屏的方法 分屏功能通常用于展示多个独立内容区域,以下是几种常见的实现方式: 使用 CSS Grid 布局 通过 CSS Grid 可以轻松创建分屏布局,在 Vue 组件中直接应用样式…

js实现vue

js实现vue

Vue.js 的基本实现方法 在 JavaScript 中实现 Vue.js 的功能,可以通过直接引入 Vue 库或使用现代构建工具(如 Vite 或 Webpack)。以下是几种常见的实现方式:…