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

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>

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

<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 iview实现分页

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

相关文章

vue实现图片搜索

vue实现图片搜索

Vue实现图片搜索功能 使用HTML5的File API获取图片 通过<input type="file">元素让用户选择图片文件,使用FileReader对象读取图片数据。 <t…

vue实现本地数据存储

vue实现本地数据存储

使用 localStorage 或 sessionStorage Vue 中可以直接调用浏览器提供的 localStorage 或 sessionStorage API 进行数据存储。localSto…

vue实现下拉层级

vue实现下拉层级

Vue实现下拉层级菜单 使用Vue实现下拉层级菜单可以通过递归组件或动态渲染的方式完成。以下是两种常见实现方法: 递归组件实现 创建一个递归组件处理多级菜单结构: <template>…

vue设计与实现 书

vue设计与实现 书

vue设计与实现 书 《Vue.js设计与实现》是一本深入探讨Vue.js框架内部原理和设计思想的书籍,适合希望深入理解Vue.js的开发者。以下是关于这本书的详细信息: 书籍内容 《Vue.js…

vue实现飘窗原理

vue实现飘窗原理

vue实现飘窗原理 飘窗效果通常指在页面上悬浮显示的弹窗或通知,跟随页面滚动或固定在某个位置。Vue实现这一效果主要依赖组件化开发、CSS定位和动态数据绑定。 组件结构设计 创建一个独立的Vue组件…

vue实现活动倒计时

vue实现活动倒计时

实现活动倒计时的基本思路 在Vue中实现活动倒计时通常需要获取当前时间与活动结束时间的差值,并将其转换为天、小时、分钟、秒的格式展示。通过定时器每秒更新显示的时间。 定义倒计时数据 在Vue组件的…