uni-table 表格的封装

news2024/11/25 11:48:08

文章目录

  • 项目场景:
  • 实现效果
  • 创建表格组件文件
  • 页面中使用
  • 实现方法

项目场景:

在实际的应用场景中,表格是一个非常常见的需求,如果每一个的表格都自己去手写的话非常的浪费时间,并且当中的代码冗余量非常大,所以很有必要进行封装。


实现效果

在这里插入图片描述

这里测试数据并没有放太多,大概看个效果就可以了
这里的表头、表体、以及操作都是动态的,主要实现的方法在后续会进行讲解。

创建表格组件文件

在这里插入图片描述

tableList.js

<template>
	<view class="uni-container">
    <uni-table ref="table" :loading="loading" border emptyText="暂无更多数据">
      <!-- 表头 -->
      <uni-tr>
        <uni-th v-for="(item,index) in tableConfig" :width="item.width" :align="item.align" :key="index" class="tableHeader">{{ item.label }}</uni-th>
      </uni-tr>
      <!-- 表体 -->
      <uni-tr v-for="(item, index) in tableData" :key="index">
        <uni-td v-for="(items, indexs) in item" align="center">{{ items }}</uni-td>
        <uni-td v-if="tableOperate.length != 0" align="center">
          <button class="tableBut" size="mini" v-for="(itemBut) in tableOperate">{{ itemBut }}</button>
        </uni-td>
      </uni-tr>
      
    </uni-table>
	</view>
</template>


<script>
export default {
	data() {
		return {
		}
	},
  props:{
    tableData:{
      default(){
        return[]
      }
    },
    tableConfig:{
      default(){
        return[]
      }
    },
    loading:{
      default(){
        return[]
      }
    },
    tableOperate:{
      default(){
        return[]
      }
    },
  },
	methods: {
		
	}
}
</script>


<style lang="scss" scoped>
  .tableHeader{
    font-size: 11px;
    padding: 0px;
    background-color: #eee;
    font-weight: 500;
  }
  .tableBut{
    font-size: 11px;
  }
  .uni-table-td{
    padding: 6px 8px;
  }
</style>


使用说明:
tableData : 表格数据
tableConfig : 表格配置
loading :是否在加载中
tableOperate :操作

tableData:[
  {
    "name": "张三",
    "age": "21",
    "gender": "男"
  },
  {
    "name": "李四",
    "age": "23",
    "gender": "女"
  },
  {
    "name": "王五",
    "age": "22",
    "gender": "男"
  }
]

taleConfig: [
  {
    "label": "姓名",
    "align": "center",
    "width": 90,
    "key": "name"
  },
  {
    "label": "年龄",
    "align": "center",
    "width": 55,
    "key": "age"
  },
  {
    "label": "性别",
    "align": "center",
    "width": 55,
    "key": "gender"
  },
  {
    "label": "详情",
    "align": "center",
    "width": 50
  }
]

loading: true : 加载中,false : 未加载

tableOperate: [
  "查看","编辑"
]

页面中使用

<template>
  <view>
      <tableList :tableData="tableData" :tableConfig="tableConfig" :loading='tableLoading' :tableOperate='tableOperate'></tableList>
  </view>
</template>
//引入并在component中注册组件
<script>
import tableList from '../components/tableList.vue'
export default {
	components:{
    tableList
  },
  data(){
  	return{
  		tableData:[
			  {
			    "name": "张三",
			    "age": "21",
			    "gender": "男"
			  },
			  {
			    "name": "李四",
			    "age": "23",
			    "gender": "女"
			  },
			  {
			    "name": "王五",
			    "age": "22",
			    "gender": "男"
			  }
			], 	//列表数据
  		tableOperate:['查看','编辑'],	//列表操作
  		tableConfig: [
			  {
			    "label": "姓名",	//显示名称
			    "align": "center",	//位置
			    "width": 90,	//宽度
			    "key": "name"	//值
			  },
			  {
			    "label": "年龄",
			    "align": "center",
			    "width": 55,
			    "key": "age"
			  },
			  {
			    "label": "性别",
			    "align": "center",
			    "width": 55,
			    "key": "gender"
			  },
			  {
			    "label": "详情",
			    "align": "center",
			    "width": 50
			  }
			],	//列表配置
			tableLoading:false, //列表加载
		}
  }
}
</script>

实现方法

通过父组件调用时传入的数据、配置、操作、加载状态,子组件进行接收。
首先先通过第一个<uni-tr></uni-tr>来作为表头,在表头中利用v-for循环渲染表头的每一列,这里的话表头就完成渲染了。

除了第一行<uni-tr></uni-tr>为表头外其余的都为表体,也是通过v-for循环进行渲染<uni-tr></uni-tr>,这样子就完成渲染每一行了,但是此时内容都是为空的因为<uni-tr></uni-tr>中还有<uni-td><</uni-td>所以还需要在每一个<uni-tr></uni-tr>中循环渲染<uni-td><</uni-td>

此时基本就完成了表格的渲染,但是假如还需要操作列时,这个时候每一行的操作列都是空的,因为这里v-for循环渲染的源数据是tableData,而tableData中是不会保存操作列的数据的,所以需要传入一个tableOperate,当tableOperate不为空时就会多渲染一列出来,而这里面的按钮之所以要用v-for进行循环是考虑到有些时候有多个操作所以依旧需要循环去渲染。

到这里的话基本上的表格封装就完成了,如果说还有其他的需求的话我这里没有写到也可以自行根据需求进行改造。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/666941.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python--元组

Python--元组 <font colorblue>一、创建元组<font colorblue>二、访问元组元素<font colorblue>三、元组的增、删、查、改<font colorblue>1、添加元素<font colorblue>2、删除元素<font colorblue>3、查找元素<font colorblue>4、修…

甄品进化 | 燕小千智能助手,用AIGC撬动企业知识宝藏

背景&#xff1a;2022年AIGC&#xff08;AI-Generated Content,人工智能生成内容&#xff09;这个新概念横空出世&#xff0c;不仅被消费者追捧&#xff0c;而且备受投资界的关注&#xff0c;更是被技术和产业界竞相追逐。2022年12月&#xff0c;OpenAI的大型语言生成模型ChatG…

Android 60问60答 (一篇复习整个Android)

Android 60问60答 &#xff08;一篇复习整个Android&#xff09; 有哪些移动端平台&#xff1f; 厂商开发平台&#xff1a; los 黑莓&#xff08;blackBerry&#xff09; 第三方私有平台&#xff1a;第三方开发供移动设备厂商使用 WindowsMobile 免费开源平台&#xff1…

微信小程序克隆到运行

1.git克隆 2.安装依赖 npm i 如果遇到卡在node lib/install.js 一直不进行 重新运行安装&#xff1a;(https://www.python100.com/html/3716RLP8FZM2.html) npm install --ignore-scripts理解npm install --ignore-scripts 3.安装完运行 npm run serve如果报错&#xff1a; …

基于改进多目标粒子群算法的配电网储能选址定容——附Matlab代码

目录 摘要&#xff1a; 主要内容&#xff1a; 程序思路&#xff1a; 储能选址定容优化模型&#xff1a; &#xff08;1&#xff09;节点电压波动&#xff1a; &#xff08;2&#xff09;负荷波动&#xff1a; &#xff08;3&#xff09;储能系统容量&#xff1a; 改进的…

2023年最好用的办公AI工具,让你工作效率提升10倍!

2023年是AI工具大爆发的一年&#xff0c;在效率办公领域&#xff0c;同样涌现出了很多优秀的AI办公工具&#xff0c;小编亲测了几款&#xff0c;都是宝藏好用的App&#xff0c;以下排名不分先后&#xff0c;一起来看看吧&#xff01; AI办公工具哪个好 GitMindNotion AI酷表C…

智能优化算法之黏菌优化算法(SMA),附matlab代码

黏菌算法是2020年提出的一种智能优化算反&#xff0c;主要模拟的是自然界中多头绒泡菌在不同食物浓度下的觅食行为以及状态变化。黏菌主要分泌酶来消化食物&#xff0c;黏菌的前端延伸成扇形&#xff0c;后端由相互连接的静脉网络包围。环境中不同浓度的食物影响着黏菌静脉网络…

C语言数据在内存中存储---整型提升练习

前言&#xff1a;学习了C语言中的整型提升&#xff0c;总是感觉听的时候很明白&#xff0c;但当自己做题的时候&#xff0c;又总是遗漏了哪一步。自己的感悟&#xff1a;整型提升步骤以及原理都一样&#xff0c;就是把步骤记清楚一步一步的来就行。因此通过下面的一道题来每日复…

【正点原子STM32连载】第三十七章 485实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html# 第三…

【Java.SE】数组的定义与使用

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a;Java.SE&#xff0c;本专栏主要讲解运算符&#xff0c;程序逻辑控制&#xff0c;方法的使用&…

【机器学习】十大算法之一 “随机森林”

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

Error in `taosdump‘: malloc(): memory corruption: 0x0

在使用taostools的taosdump导出数据时&#xff0c;遇到如下问题&#xff1a; 解决步骤如下&#xff1a; 先看导出目录下的内存是否足够&#xff0c;不够的话&#xff0c;换其他目录导出如果在内存充足的情况下&#xff0c;出现上述问题那么可能是taostools版本不对&#xff0…

Agilent8564EC频谱分析仪

安捷伦8564EC频谱分析仪13145876435 8564EC 是安捷伦的 40 GHz 频谱分析仪。频谱分析仪测量已知和未知信号的频谱功率。频谱分析仪收集信息&#xff0c;例如输入信号与其频率相比的幅度。作为频率分析仪&#xff0c;频谱分析仪的主要用途是记录和分析电输入信号以及其他信号的频…

OWASP之CSRF跨站请求伪造

CSRF&#xff08;Cross-site request forgery&#xff09;跨站请求伪造 文章目录 一、CSRF定义二、CSRF危害三、CSRF漏洞构成1.漏洞风险存在2.用户登录受信任网站A&#xff0c;并在本地生成Cookie3.攻击者伪装数据操作请求的恶意链接或者页面4.诱使未登出用户主动访问或登录恶…

新式茶饮头部品牌「古茗茶饮」联手企企通,打造采购数字化新思路

导读 企企通在采购与供应链领域积累了丰富的项目开发经验&#xff0c;是国内一站式采购数字化管理平台领军企业之一&#xff0c;其售前、商务、项目人员都是这个赛道最专业的。该平台的建设可以自动化处理采购链路多个节点重复性任务&#xff0c;帮助我们提高采购效率&#xf…

向日葵× 实在RPA擦出AI的火花,贝锐与实在智能官宣战略合作

6月19日&#xff0c;实在智能&#xff08;Intelligence Indeed&#xff09;与贝锐&#xff08;Oray&#xff09;正式宣布达成战略合作。实在智能作为国内AI准独角兽企业和超级自动化平台提供商&#xff0c;与国内领先的SaaS远程连接解决方案提供商贝锐的实力“牵手”&#xff0…

基于Python的电影票房爬取与可视化系统的设计与实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

2023年blender渲染显卡推荐

Blender是完全免费的、开源的&#xff0c;而且非常灵活。为了让 Blender 运行良好&#xff0c;有必要找到最好的 GPU。对于希望优化其 3D 建模和渲染体验的 Blender 专业人士和爱好者来说&#xff0c;找到最好的 GPU 是当务之急。GPU 不仅在渲染方面起着至关重要的作用&#xf…

电流驱动和电压驱动有什么区别(高精度电流源)

电流驱动和电压驱动是电子电路设计中常用的两种驱动方式。它们有着各自不同的优缺点&#xff0c;选择不同的驱动方式可以在不同的应用场景中获得更好的效果。 电压驱动&#xff08;Voltage Drive&#xff09;是通过控制电路的输出电压来实现对电路的控制。在电路中&#xff0c;…

软考高级系统架构设计师(四) 计算机网络1

目录 概要 TCP/IP TCP可靠传输的实现&#xff0c;依赖如下机制 ​DNS DHCP 网络规划与设计 逻辑网络设计 物理网络设计 层次化网络设计 网络冗余设计 ​网络存储技术 概要 TCP/IP POP3:邮件收取 SMTP:简单邮件传输协议 DNS:域名与IP地址之间是一对应的 DHCP:主要…