当前位置:首页 > 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中实现轮询可以通过setInterval或setTimeout配合递归调用完成。轮询通常用于定期向服务器请求数据更新。 使用setInterval的简单示例: data…

vue实现类别

vue实现类别

Vue 实现类别的几种方法 在 Vue 中实现类别功能可以通过多种方式完成,以下是一些常见的方法: 使用 v-bind:class 动态绑定类名 通过对象语法或数组语法动态绑定类名,根据条件添加或移…

vue 实现回复

vue 实现回复

Vue 实现回复功能 在 Vue 中实现回复功能通常涉及表单提交、数据绑定和列表渲染。以下是实现步骤和代码示例: 数据绑定与表单 <template> <div>…

vue tab实现

vue tab实现

Vue Tab 实现方法 使用动态组件实现 Tab 在 Vue 中可以通过动态组件 <component :is="currentTab"> 结合 v-for 和 v-bind 实现 Ta…

vue实现treeselect

vue实现treeselect

Vue TreeSelect 实现方法 使用 Vue 实现 TreeSelect 组件可以通过以下几种方式完成,包括使用现成的第三方库或自行封装组件。 使用第三方库 推荐使用成熟的第三方 TreeS…

vue远离实现

vue远离实现

Vue 原理实现 Vue.js 的核心原理包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是其关键实现原理的详细解析。 响应式系统 Vue 的响应式系统基于 Object.definePro…