用vue封装分页器,让你的页面简单而不失优雅

article/2025/8/24 4:00:28

前言

当我们在开发 web 应用时,经常需要对大量数据进行分页展示,这时候用到的就是分页器。element 是一款流行的前端 ui 框架,它提供了许多有用的工具和组件,其中就包括分页器组件。在本文中,我们将学习如何使用 vue 基于 element 封装一个简单易用的分页器组件,以方便我们在开发中快速应用。


实现思路

1、用到的参数

pageNum: 1 默认第几页
pageSize: 10 一页展示几条
total: 0 总条数

2、用到的事件方法

@size-change="sizeChange" 每页展示几条数据,改变时触发
@current-change="currentChange" 页码变化触发
:page-sizes="[5, 10, 15, 20]" 每页显示个数选择器的选项设置
layout="total, sizes, prev, pager, next, jumper" 组件布局,子组件名用逗号分隔
:current-page.sync="pageNum" 当前页数,支持 .sync 修饰符
:page-size="pageSize" 每页显示条目个数,支持 .sync 修饰符

3、数据传递的方法

props 父传子
$emit 子传父

4、实现过程

  1. 首先定义一个子组件页面用来封装分页,我这边直接用的 element 的分页组件;
  2. 在父组件中(使用的页面)引入封装组件(子组件)并注册,然后在页面中使用,在父组件中给标签(注册的组件名)上绑定一个属性, 属性上挂载需要传递的值,通过 props 在子组件(封装文件)接收数据;
  3. 在子组件中自定义一个事件,调用这个事件后,子组件通过 this.$emit('自定义事件名',要传递的数据) 发送父组件可以监听的数据,最后父组件监听子组件事件,调用事件并接收传递过来的数据。

代码详解

封装文件 /src/components/paging/index.vue

<template><div><!-- //分页器封装文件 --><el-pagination v-if='total > 0' @size-change="sizeChange" @current-change="currentChange" :page-size="pageSize"layout="total, sizes, prev, pager, next, jumper" :current-page.sync="pageNum" :page-size="pageSize":total="total"></el-pagination></div>
</template><script>export default {name: "Paging",data() {return {pageNum: 1, //当前页数为第一页pageSizes: [5, 10, 15, 20], //每页显示多少条};},//子组件接收父组件的值props: {total: {//总数据条数required: false, //是否必填default: 0, //默认值为0},pageSize: {required: false, //是否必填default: 10, //默认显示10条},},watch: {//监听页数变化pageNum(val, index) {if (typeof val === "number") {this.pageNum = val;}},},// 事件方法methods: {// 每页展示几条变化sizeChange(val) {//子组件向父组件传值this.$emit("sizeChange", val);},// 页码变化currentChange(val) {//子组件向父组件传值this.$emit("currentChange", val);},},};
</script>

使用文件 /src/views/netelement/index.vue

<template><div><!-- //表格 --><div class="tableBox"><el-table :data="tableData" stripe border><el-table-column type="index" width="50"></el-table-column><el-table-column prop="name" label="名称"></el-table-column><el-table-column prop="id" label="id"></el-table-column><el-table-column prop="createtime" label="编号"></el-table-column><el-table-column prop="desc" label="备注"></el-table-column><el-table-column prop="updatetime" label="电话号码"></el-table-column></el-table></div><!-- //分页器 --><div v-show="total>0" class="pagingBox"><Paging :pageNum="gather.pageNum" :total="total" :pageSize="gather.pageSize"@sizeChange="sizeChange" @currentChange="currentChange" /></div></div>
</template>
<script>import {getFactoryListAsync} from "@/api/commonRequest.js"; //引入接口文件import Paging from "@/components/paging/index.vue"; //引入封装的分页器文件export default {data() {return {tableData: [], //表格数据total: 0, //数据总条数gather: {pageNum: 1,//默认第一页pageSize: 10,//一页展示10条}};},components: { //一定要注册组件Paging},mounted() {this.getFactoryListAsync() //定义一个方法调用},methods: {// 调用方法getFactoryListAsync() {// 接口方法getFactoryListAsync(this.gather).then(res => {if (res.code == '1000') {// 赋值操作this.tableData = res.data.rowsthis.total = res.data.total}})},// 点击页码及上一页下一页按钮操作currentChange(val) {this.gather.pageNum = val;this.getFactoryListAsync(); //调用接口方法},//每页展示几条按钮操作sizeChange(val) {this.gather.pageSize = val;this.getFactoryListAsync(); //调用接口方法},},};</script>
<style scoped>.tableBox {margin-bottom: 20px;}.pagingBox {text-align: right;}</style>

实现效果

在这里插入图片描述


http://chatgpt.dhexx.cn/article/orlcX6RI.shtml

相关文章

js分页器

写分页器的时候引用别人的js总是不能达到自己想要的效果&#xff0c;在这里记录下自制分页器的历程 html部分 <!DOCTYPE html> <html> <head><title></title><meta charset"utf-8" /><script src"https://code.jquery…

flutter自定义分页器

使用flutter自定义一个分页器 最近在写flutter项目&#xff0c;项目刚好需要一个分页器&#xff0c;对数据进行分页处理&#xff0c;一开始想要在网上找有没有已经写好的插件&#xff0c;搜寻一会后还是想着自己写一个。 先看看效果图 思路 首先要准备一个盒子&#xff0c;装载…

手写一个简单的分页器

封装分页器 1. 前言 分页器基本上是任何网站必须要有的一个组件&#xff0c;为什么需要分页器&#xff0c;当后台传入了大量的数据&#xff0c;那么在前端拿到数据&#xff0c;如果直接展示很有可能或造成卡顿&#xff0c;同时消耗过多的内存&#xff0c;给用户带来的浏览效果就…

分页器(分页器基本操作、点击按钮分页、美化分页器)

分页器基本操作 用户访问一个网页或者查看某些数据&#xff0c;如果数据量过大肯定需要按页查看&#xff0c;不可能一个页面显示N条数据内容这里就用到了分页器 首先往数据库里插入数据&#xff0c;这里咱们进行脚本批量插入 # #脚本批量插入数据book_list []for i in range(2…

分页器

1.分页器 作用&#xff1a;干啥的&#xff1f;数据量大的话&#xff0c;可以分页获取&#xff0c;查看。 2.一次性插入多条数据 def add1(request):# 这样for循环会造成对数据库的大量访问&#xff0c;不建议这样添加# models.Book.objects.create(name连城诀%s%i,price10i)ll[…

分页器组件

作为前端三剑客的分页器在许多场景都能 使用&#xff0c;在实际工作中也有插件来快速实现分页器功能 但我们要了解原理&#xff0c;所以我们自己手搓个简单的分页器 先处理好静态组件 <template><div class"pagination"><button>1</button>…

分页器的介绍

一 、分页器的简介 在页面显示分页数据&#xff0c;需要用到django分页器组件 from django.core.paginator import Paginator paginator对象&#xff1a;paginator Paginator(user_list,10)#per_page:每页显示条目数量 #count &#xff1a;数据总个数#num_pages:总页数#page_…

自定义分页器

前端必须要掌握的分页器&#xff0c;轮播图&#xff0c;与日历 手写&#xff0c;掌握原理 1:分页功能实现 为什么很多项目采用分页功能&#xff1a;比如电商平台有很多数据。一次加载出来会卡住 采用分页功能 Element Ul是有相应的分页组件&#xff0c;使用起来超级简单…

【JS案例】分页器——使用原生JavaScript实现

在使用vue编写完一个分页器组件后&#xff0c;我对分页器的底层逻辑产生了兴趣&#xff0c;想在此组件的基础上再深入了解一些分页器的底层逻辑&#xff0c;了解vue与原生js的区别。我在github上看了一些大神写的分页器&#xff0c;属实牛逼&#xff0c;之后自己也根据他们的编…

zigbee-无线点灯-协调器节点

开发环境&#xff1a;IAR 8.10 Z-stack 2.5 功能&#xff1a;协调器与终端节点组网&#xff0c;实现点对点通信。终端向协调器发送“D1”&#xff0c;协调器LED灯闪烁。 流程图&#xff1a; 具体代码&#xff1a; 定义所需要的变量 端点描述符 endPointDesc_t GenericApp_e…

十分钟入门Zigbee

大部分教程通常都是已Zigbee原理开始讲解和学习&#xff0c;各种概念让初学者难以理解。本教程从一个小白的角度出发&#xff0c;入门无需任何Zigbee底层原理知识&#xff0c;只需要基本的MCU研发经验就可以掌握&#xff0c;让您快速实现zigbee组网和节点之间通信。 本教程采用…

第一章:zigbee学习笔记之简介(上)

注&#xff1a;文章转载自https://blog.csdn.net/tainjau/article/details/81540013 写在前面&#xff1a; 最近开始搞智能家居的项目&#xff0c;之前只是了解过zigbee&#xff0c;但是并未深入学习过&#xff0c;所以工作之余&#xff0c;忙里偷闲下&#xff0c;学习一下zigb…

zigbee菜鸟笔记(一)zigbee的基础知识

一.什么是zigbee 有问题发送邮件至468078841qq.com ZigBee&#xff0c;也称紫蜂&#xff0c;是一种低速短距离传输的无线网上协议&#xff0c;底层是采用IEEE 802.15.4标准规范的媒体访问层与物理层。主要特色有低速、低耗电、低成本、支持大量网上节点、支持多种网上拓扑、低…

TI CC2538 做ZigBee协调器控制飞利浦 Hue 调色灯

【源码、文档、软件、硬件、技术交流、技术支持&#xff0c;入口见文末】 一、实验准备 1.1 硬件准备 1.1.1 CC2538 模块 本文中使用的 CC2538 模块是带 PA 芯片&#xff08;CC2592&#xff09;的。此外&#xff0c;最好是带焊接好的底板&#xff0c;便于后面与串口转USB…

使用zigbee的协议栈进行协调器路由器终端初始化

实验目的: 使用协议栈,外加自己写的数码管的代码模块 配置协调器路由器终端,各自对应数码管数字C,R,E。 本身不是很细致,只是把一些重要步骤截了一下,IAR工程什么的默认大家都会了。 zigbee协议栈的下载 下载完找以下文件夹 找到下面两个文件夹,然后复制出来放到自己的…

zigbee z-stack 协调器断电后,重新上电无法恢复

1、是否宏定义了NV_RESTORE1&#xff1b;NV_INIT1&#xff1b;&#xff08;协调器、路由器、终端都要定义&#xff09;定义位置如下 2、下载模式选Erase flash&#xff0c;选择位置&#xff1a;&#xff08;20201117修正:实际调试发现如果不许选择erase flash 协调器断电重连&a…

ZigBee中协调器断电重连问题?

问题描述&#xff1a;如果你想实现一个完好的网络&#xff0c;协调器断电重启后还是能加入原来的网络&#xff0c;加上NV_RESTORE编译选项就可以&#xff0c;如果发现加上它&#xff0c;还是实现不了要求&#xff0c;就请作如下操作&#xff1f; 方法&#xff1a;如果加了NV_R…

Zigbee协调器主动使终端节点退网

我使用ZDP_MgmtLeaveReq()这个函数来让已知短地址的终端退网&#xff0c;代码如下&#xff1a;我这样使用的结果是&#xff0c;可以将节点退网&#xff0c;节点上也需要做一些配置。我在函数里禁止节点重连&#xff0c;但是节点退网后会获取到新的短地址重新入网&#xff0c;这…

ZIGBEE 工程内区分终端与协调器

目前已知&#xff0c;工程中区分是终端还是协调器&#xff0c;与工程中Tolls文件夹中的.cfg文件有关&#xff1a; 从project->Edit Configuration进去可以删减左边栏Workspace下拉的项&#xff1a; 区别终端、路由器和协调器是通过Options.. -> C/C Compiler -> Extra…