vue+iview分页组件的封装

下面将详细讲解vue+iview分页组件的封装。

一、分页组件介绍

在前端开发中,经常需要用到分页组件,用于将数据分页展示。iview是一套基于 Vue.js 的开源 UI 组件库,内置了丰富的组件,包括分页组件。iview分页组件具有易用、美观、可定制性强等优点。因此,本文以iview分页组件为例,介绍Vue+iview分页组件的封装。

二、组件封装

1.安装iview和vue分页插件

首先需要安装iview和vue分页插件,可以通过以下命令进行安装:

npm install iview --save
npm install vue-pagination-2 --save

2.封装分页组件

接下来是最重要的封装分页组件的过程。在src/components下新建 Pagination.vue 文件,代码如下:

<template>
  <div>
    <div class="custom-pagination">
      <Page :total="total" :current="current" :page-size="pageSize" @on-change="handleChange" :show-total="true" show-elevator show-sizer></Page>
    </div>
    <div class="custom-total">共{{ total }}条</div>
  </div>
</template>

<script>
import Page from 'iview/src/components/page';
import vuePagination from 'vue-pagination-2';

export default {
  name: 'Pagination',
  components: {
    Page,
    vuePagination
  },
  props: {
    total: {
      type: Number,
      required: true
    },
    pageSize: {
      type: Number,
      required: true
    },
    current: {
      type: Number,
      required: true
    }
  },
  methods: {
    handleChange(currentPage) {
      this.$emit('change', currentPage);
      this.$emit('update:current', currentPage);
    }
  }
};
</script>

<style>
.custom-pagination {
  text-align: center;
  margin-top: 20px;
}

.custom-total {
  text-align: center;
  margin-top: 10px;
}
</style>

代码中,我们引入了iview的Page组件和vue-pagination-2插件;定义了分页组件的props参数,包括total、pageSize和current;通过@on-change事件监听分页页码的变化,从而达到翻页的效果;最后通过emit事件将当前页传递给父组件,也可以自行选择更新组件内部的current参数。

3.在父组件中使用分页组件

父组件中引入Pagination组件,并在template中进行使用。示例如下:

<template>
  <div>
    <Pagination :total="total" :page-size="10" :current.sync="currentPage" @change="refreshList"></Pagination>
    <Table :data="list" border stripe>
      <Table-column title="姓名" key="name"></Table-column>
      <Table-column title="年龄" key="age"></Table-column>
    </Table>
  </div>
</template>

<script>
import Pagination from '@/components/Pagination.vue';

export default {
  name: 'List',
  components: {
    Pagination
  },
  data() {
    return {
      total: 50,
      currentPage: 1,
      list: []
    };
  },
  methods: {
    refreshList(currentPage) {
      this.currentPage = currentPage;
      //调用接口获取数据
      //此处略去接口请求代码
      this.list = response.data.list;
    }
  }
};
</script>

代码中,我们引入了Pagination组件,并传入了total、pageSize和current三个props参数;并在refreshList方法中调用接口,获取对应的数据,从而完成了分页展示的过程。同时,由于currentPage被设置为.sync修饰符,因此,分页组件的页码变化会自动更新到父组件中的currentPage参数上,实现了分页组件和父组件的数据交互。

三、总结

至此,vue+iview分页组件的封装过程完成。本文以iview分页组件为例,介绍了Vue+iview分页组件的封装方式,并给出了完整的代码示例。此外,iview分页组件的风格可以通过自定义样式进行修改,以适应各自项目的需求。

参考文献:
1. iView - 一套基于 Vue.js 的高质量 UI 组件库 http://v1.iviewui.com/
2. vue-pagination-2分页插件 https://github.com/matfish2/vue-pagination-2

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue+iview分页组件的封装 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • C++ 的三种访问权限与三种继承方式

    C++中的三种访问权限为:public(公有)、private(私有)和protected(保护)。而C++中的三种继承方式为:public继承、private继承和protected继承。下面就为大家详细讲解一下这些内容。 三种访问权限 1. public public是一个允许最广泛的访问控制级别。在public访问级别下,外部用户可以通过对象(或指向对…

    other 2023年6月26日
    00
  • 关于android:如何在edittext中更改线条颜色

    关于Android:如何在EditText中更改线条颜色 在Android中,可以通过修改EditText的样式来更改其线条颜色。以下是关于如何在EditText中改线条颜色的完整攻略: 使用XML样式更改线条颜色 可以使用XML样式来更改EditText的线条颜色。可以按照以下步骤进行: 在res/values/styles文件中定义EditText的样式…

    other 2023年5月8日
    00
  • JPA @Basic单表查询如何实现大字段懒加载

    JPA框架提供了@Basic注解来指定实体类中的基本属性,该注解可以与其他注解配合使用实现单表查询中的大字段懒加载。 下面是具体的步骤: 步骤一:在实体类中指定大字段的加载策略 使用@Basic注解来指定实体类中的大字段是否使用懒加载策略。 @Entity public class Book { @Id @GeneratedValue(strategy = …

    other 2023年6月26日
    00
  • esxi6.5从载到安装

    esxi6.5从载到安装 ESXi是一款主流的虚拟化操作系统,采用Bare Metal架构,相对于传统的虚拟化解决方案来说有着更加出色的性能和稳定性,而且支持的硬件范围很广泛。 本篇文章将会介绍如何将ESXi 6.5从载到安装过程。 准备工作 在进行ESXi 6.5从载到安装的过程中,我们需要做一些准备工作,包括: 身份验证 在VMware网站上注册并获取E…

    其他 2023年3月29日
    00
  • MySQL优化之大字段longtext、text所生产的问题

    MySQL优化之大字段longtext、text所产生的问题主要包括以下几个方面: 存储空间占用问题:长文本字段占用的存储空间比较大,容易导致表格的数据量非常庞大,从而使查询速度变慢,需要进行碎片整理。 查询效率问题:长文本字段的大小限制比较大,可能会导致查询效率变慢,甚至无法查询出结果,需要进行适当的优化设置。 索引优化问题:长文本字段在建立索引时需要考虑…

    other 2023年6月25日
    00
  • mysql 列转行,合并字段的方法(必看)

    MySQL 列转行、合并字段的方法 在 MySQL 中,我们有时需要对数据进行列转行,或者把多个字段的数据合并在一起成为一个字段。本文将介绍两种实现方式。 实现方式一:UNION ALL 使用 UNION ALL 可以将多个 SELECT 语句的结果合并在一起。 先来看一个简单的例子,将一个表的三个字段合并成一个字段: SELECT CONCAT(col1,…

    other 2023年6月25日
    00
  • dropzone(文件上传插件)

    以下是“dropzone(文件上传插件)”的标准markdown格式文本,其中包含了两个示例说明: dropzone(文件上传插件) dropzone是一款流行文件上传插件,它可以让用户通过拖拽文件到指定区域来上传文件。本文将介绍如何使用dropzone,包括两个例说明。 1. 安装dropzone 要使用dropzone,我们需要先安装它。以下是安装dro…

    other 2023年5月10日
    00
  • 10多个下载photo shop brushes的最佳网站

    以下是关于“10多个下载Photoshop刷子的最佳网站”的完整攻略,包括基本知识和两个示例说明。 基本知识 Photoshop刷子是一种用于Photoshop软件的工具,它可以帮助用户快速添加各种效果和纹理到他们的设计中。Photoshop刷子可以通过下载和安装来扩展Photoshop的功能。 以下是一些下载Photoshop刷子的最佳网站: Brushe…

    other 2023年5月7日
    00
合作推广
合作推广
分享本页
返回顶部