当前位置:首页 > 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 列表实现方法 使用 v-for 指令 v-for 是 Vue 中用于渲染列表的核心指令,基于数据源动态生成 DOM 元素。语法格式为 item in items 或 (item, index)…

vue实现表白

vue实现表白

Vue 实现表白页面 使用 Vue 可以快速创建一个动态、交互式的表白页面。以下是一个简单的实现方案: 基础结构 创建一个 Vue 项目或单文件组件,包含以下核心部分: <template&…

vue 全景实现

vue 全景实现

Vue 全景实现方案 在Vue中实现全景效果,通常需要结合WebGL或第三方库来处理3D场景渲染。以下是几种常见方法: 使用Three.js库 Three.js是一个强大的WebGL库,适合创建3D…

vue实现hexo

vue实现hexo

Vue 集成 Hexo 的实现方法 Hexo 是一个静态博客框架,而 Vue 是一个前端框架。将 Vue 集成到 Hexo 中可以通过以下方式实现: 在 Hexo 中使用 Vue 组件 通过 Hex…

vue实现门户

vue实现门户

Vue 实现门户网站的关键步骤 搭建基础框架 使用 Vue CLI 或 Vite 初始化项目,安装 Vue Router 管理多页面路由。门户通常需要响应式布局,可引入 UI 库如 Element P…

vue计算属性 实现

vue计算属性 实现

Vue 计算属性的实现 计算属性(Computed Properties)是 Vue 中的一个核心功能,用于声明式地定义依赖其他属性的值。计算属性会缓存结果,只有当依赖的响应式数据发生变化时才会重新计…