Vue分页组件的封装方法

yizhihongxing

Vue分页组件的封装方法

什么是分页组件?

分页组件是一个常见的网页设计元素,用于展示一些较长的内容列表,将其分为多页进行展示和浏览。分页组件由一组页码、上一页、下一页、总页数、总记录数等组成,它们可以帮助用户更方便地浏览内容。

Vue分页组件的封装方法

Vue是目前较为流行的前端框架之一,我们可以使用Vue来方便地封装一个分页组件。下面介绍一下Vue分页组件的封装方法:

第一步:创建组件

我们可以在Vue的组件中创建一个分页组件。如下所示,我们创建一个名为Pagination的分页组件,其中包含页码、上一页、下一页等元素。组件还接收一个pages参数,表示需要显示的总页数:

<template>
  <div class="pagination">
    <button v-if="currentPage > 1" @click="currentPage--">上一页</button>
    <button v-else disabled>上一页</button>
    <button v-for="index in pages"
            :key="index"
            :class="{ active: currentPage === index }"
            @click="currentPage = index">{{ index }}</button>
    <button v-if="currentPage < pages" @click="currentPage++">下一页</button>
    <button v-else disabled>下一页</button>
    <p>共 {{ pages }} 页</p>
  </div>
</template>

<script>
export default {
  name: 'Pagination',
  props: {
    pages: Number
  },
  data () {
    return {
      currentPage: 1
    }
  }
}
</script>

<style>
.pagination {
  margin-top: 20px;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
}

button {
  margin-right: 10px;
  font-size: 16px;
  padding: 5px 10px;
  border: none;
  background: #eee;
  border-radius: 5px;
}

button.active {
  background: #409eff;
  color: #fff;
}
</style>

第二步:使用组件

我们可以在其他组件中使用刚刚创建的分页组件。如下所示,在一个包含许多记录的组件中,使用Pagination组件进行分页:

<template>
  <div class="record-list">
    <div class="record" v-for="item in recordList" :key="item.id">
      <p>{{ item.title }}</p>
      <p>{{ item.content }}</p>
    </div>

    <Pagination :pages="pages"></Pagination>
  </div>
</template>

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

export default {
  name: 'RecordList',
  components: {
    Pagination
  },
  data () {
    return {
      currentPage: 1,
      pageSize: 10,
      total: 100,
      recordList: []
    }
  },
  computed: {
    pages () {
      return Math.ceil(this.total / this.pageSize);
    }
  },
  methods: {
    loadData () {
      // 加载数据
    }
  },
  watch: {
    currentPage () {
      this.loadData();
    }
  },
  created () {
    this.loadData();
  }
}
</script>

在这个示例中,我们在RecordList组件中引入了Pagination组件,用于分页显示记录列表。通过计算总记录数,以及每页显示的记录数,我们可以计算出总页数。分页组件接收总页数作为参数,通过点击页码按钮可以切换当前页,从而实现翻页的功能。

示例说明

示例一

下面是一个带有分页功能的博客列表示例。用户可以点击分页组件的页码按钮进行翻页:

<template>
  <div class="blog-list">
    <div class="blog" v-for="item in blogList" :key="item.id">
      <h3>{{ item.title }}</h3>
      <p>{{ item.content }}</p>
      <div class="meta">
        <span>{{ item.author }}</span>
        <span>{{ item.createTime }}</span>
      </div>
    </div>

    <Pagination :pages="pages"></Pagination>
  </div>
</template>

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

export default {
  name: 'BlogList',
  components: {
    Pagination
  },
  data () {
    return {
      currentPage: 1,
      pageSize: 10,
      total: 100,
      blogList: []
    }
  },
  computed: {
    pages () {
      return Math.ceil(this.total / this.pageSize);
    }
  },
  methods: {
    loadData () {
      // 加载数据
    }
  },
  watch: {
    currentPage () {
      this.loadData();
    }
  },
  created () {
    this.loadData();
  }
}
</script>

示例二

下面是一个带有分页功能的商品搜索列表示例。用户可以在搜索框中输入关键字,并通过分页组件进行翻页:

<template>
  <div class="product-list">
    <div class="product" v-for="item in productList" :key="item.id">
      <h3>{{ item.name }}</h3>
      <p>{{ item.desc }}</p>
      <div class="price">{{ item.price }}元</div>
    </div>

    <Pagination :pages="pages"></Pagination>
  </div>
</template>

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

export default {
  name: 'ProductList',
  components: {
    Pagination
  },
  data () {
    return {
      currentPage: 1,
      pageSize: 10,
      total: 100,
      keyword: '',
      productList: []
    }
  },
  computed: {
    pages () {
      return Math.ceil(this.total / this.pageSize);
    }
  },
  methods: {
    search () {
      // 根据关键字搜索商品
    },
    loadData () {
      // 加载数据
    }
  },
  watch: {
    currentPage () {
      this.loadData();
    },
    keyword () {
      this.search();
    }
  },
  created () {
    this.search();
  }
}
</script>

在这个示例中,用户可以在搜索框中输入关键字,系统会根据关键字搜索商品并展示在商品列表中。当用户点击分页组件的页码按钮时,系统会重新加载数据。

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

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

相关文章

  • C#取得Web程序和非Web程序的根目录的N种取法总结

    C#取得Web程序和非Web程序的根目录的N种取法总结 在使用C#编写程序时,我们经常需要获取程序的根目录,根据程序是Web程序还是非Web程序,获取根目录的方法也有所不同。下面总结了几种不同情况下获取根目录的方法: 获取Web程序的根目录 方法1:使用HttpContext.Current.Server.MapPath方法 在Web程序中,可以使用Http…

    other 2023年6月27日
    00
  • 深入解析Java的设计模式编程中的模板方法模式

    深入解析Java的设计模式编程中的模板方法模式 模板方法模式是一种行为设计模式,在Java程序中被广泛地使用,它将一个算法的步骤定义为一组抽象方法,具体实现则由子类来完成。这种模式提供了在框架方法级别上的灵活性,并且允许不同的算法使用相同的框架。 什么是模板方法模式 模板方法模式是一种行为设计模式,它允许我们为实现算法的关键步骤定义一个模板骨架,并允许子类通…

    other 2023年6月27日
    00
  • Maya怎么制作三维立体镂空样式的垃圾桶?

    制作三维立体镂空样式的垃圾桶需要用到Maya软件。下面是具体的制作过程: 步骤一:准备工作 首先打开Maya软件,新建一个文件,选择合适的场景单位,并设置视图为透视或前视图。 步骤二:创建基础模型 首先,我们需要创建一个基本的垃圾桶模型,可以通过创建圆柱体来实现。在Maya的主工具栏中,选择“Create” > “Polygon Primitives”…

    other 2023年6月27日
    00
  • 使用webservice自定义注解处理参数加解密问题

    使用webservice自定义注解处理参数加解密问题的完整攻略如下: 1. 创建自定义注解 首先,我们需要创建一个自定义注解,用于标记需要进行参数加解密的方法或参数。可以使用如下代码创建一个@EncryptDecrypt注解: import java.lang.annotation.ElementType; import java.lang.annotati…

    other 2023年10月14日
    00
  • Coding.net简单使用指南

    Coding.net是一个面向开发者的云端协作平台,提供代码托管、项目管理、团队协作、CI/CD等功能。下面是Coding.net的简单使用指南。 注册账号 首先,需要在Coding.net上注册一个账号。注册过程非常简单,只需要提供邮箱地址和密码即可。 创建项目 注册成功后,可以创建一个新的项目。在Coding.net的首页上,单击“新建项目”按钮,填写项…

    other 2023年5月5日
    00
  • 什么是汇编语言

    汇编语言是一种底层计算机语言,它使用助记符号(也称为指令码)来操作计算机的硬件资源。使用汇编语言编写的程序可以直接访问硬件资源,因此它比高级语言更加灵活和高效。下面是关于汇编语言的完整攻略。 汇编语言的发展历史 汇编语言最早出现在20世纪50年代,它是为了方便程序员编写机器语言程序而发明的。在20世纪60年代和70年代,随着计算机性能的提高,汇编语言成为了程…

    other 2023年6月26日
    00
  • 在linux下使用任务管理器

    在 Linux 下使用任务管理器 在 Linux 中,任务管理器(task manager)被称为系统监视器(system monitor)。它可以帮助我们查看系统资源使用情况,并且可以方便地终止运行中的进程。 打开系统监视器 在大多数 Linux 发行版中,可以通过以下方式打开系统监视器: 按下 Ctrl + Alt + T 组合键,打开终端。 输入 gn…

    其他 2023年3月29日
    00
  • Android存储卡读写文件与Application数据保存的实现介绍

    Android存储卡读写文件与Application数据保存的实现介绍 1. 前言 在Android应用中,数据的存储方式主要有两种:一种是在应用内部存储中存储数据,另一种是在外部存储中存储数据。其中,存储方式不同,所需要的权限和操作也略有差异。本文将对Android存储卡读写文件与Application数据保存的实现做一个全面的介绍,包括使用示例。 2. …

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