Vue根据后端返回的tabList动态渲染组件信息

最近做了一个功能,后端根据配置信息,动态返回一个tabList,其中结构是List<String,Object> tabList; map里面的数据是 label、value 页面需要根据tablist动态渲染组件(不同的tab都使用了组件进行了封装)
实现效果

在这里插入图片描述

直接看代码
<template>  <a-tabs v-model:activeKey="activeModule" @change="handleTabChange" v-if="billId && tabList.length > 0">  <a-tab-pane  v-for="(tab, index) in tabList"  :key="tab.label"  :tab="tab.label"  >  <!-- 使用动态组件来根据 tab.key 渲染不同的组件 -->  //我这里直接用的label的中文进行匹配 可以根据自己需要更改<component  :is="getComponentName(tab.label)"  :billId="billId"  v-if="activeModule === tab.label"  />  </a-tab-pane>  </a-tabs>  
</template>  
<script>  // 导入所有需要的组件  import Invoice from './tabs/invoice'import BankReceipt from './tabs/bankReceipt'import Dispatch from './tabs/dispatch'import PurchaseOrder from './tabs/purchaseOrder'import ReceiptOrder from './tabs/receiptOrder'import RequestOrder from './tabs/requestOrder'import TrainApplication from './tabs/trainApplication'import TravelApplication from './tabs/travelApplication' // ... 其他组件的导入  export default {  components: {  Invoice,BankReceipt,Dispatch,PurchaseOrder,ReceiptOrder,RequestOrder,TrainApplication,TravelApplication// ... 其他组件的注册  },  data() {  return {  billId: null, // 假设这个值会在某个地方被设置  tabList: [  { key: '0', label: '发票' },  { key: '1', label: '银行回单' },  ],  //具体的数据根据自己需要从接口获取activeModule: '发票', // 初始激活的标签页  };  },  methods: {  getTabList(){//1、从后端接口获取tabList....//2、初始化默认激活tab为第一个this.activeModule=this.tabList[0].label},handleTabChange(key) {  // 处理标签页切换的逻辑  this.activeModule = key;  },  getComponentName(key) {  // 根据 key 返回对应的组件名  switch (key) {  switch (key) {case '发票':return 'Invoice';case '银行回单':return 'BankReceipt';case '请款单':return 'RequestOrder';case '验收单':return 'ReceiptOrder';case '差旅申请':return 'TravelApplication';case '培训申请':return 'TrainApplication';case '公出派遣':return 'Dispatch';case '采购单':return 'PurchaseOrder';// ... 其他组件的匹配  default: return 'DefaultComponent'; // 返回一个默认组件名  }  },  },  
};  
</script>

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

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

相关文章

都给我冲!微信视频号下载助手可快速提取视频号视频,已测可用

不少视频内容创作者在写文案&#xff0c;以及收集素材的时候发现微信视频号的视频无法下载&#xff0c;该怎么办呢&#xff1f; 都给我冲&#xff01;已实测好用的视频号下载助手&#xff0c;无论是个人或者企业都可以快速保存视频号视频。 你也不用担心自己是用到什么设备&am…

Xilinx的Aurora8B10B ip原理讲解(高速收发器十六)

点击进入高速收发器系列文章导航界面 前文讲解了Aurora 8B/10B协议的一些基础知识&#xff0c;本文对Xilinx的Aurora 8B/10B IP进行讲解&#xff0c;该IP在Aurora 8B/10B的基础之上还完成了字对齐等等操作&#xff0c;开放给用户的端口有axi_full或axi_stream两种格式。 相应的…

17.3 命令行-POSIX特性、安装与分享

1. POSIX特性 在Linux和macOS系统中&#xff0c;大多数命令行工具都要求以推荐标准POSIX指定的方式传递命令行参数。 POSIX即UNIX可移植操作系统接口(Portable Operating System Interface of UNIX)是一套标准&#xff0c;旨在确保操作系统之间彼此兼容。 很多开发人员也希望…

java进阶——JVM 与 Java 体系结构详解

文章目录 1.JVM 与 Java 体系结构1.1. 前言1.1.1. 开发人员如何看待上层框架1.1.1. 我们为什么要学习 JVM&#xff1f;1.1.2. Java vs C 1.2. Java 及 JVM 简介1.2.1. JVM&#xff1a;跨语言的平台1.2.1. 字节码1.2.2. 多语言混合编程 1.3. 虚拟机与 Java 虚拟机1.3.1. 虚拟机1…

vue 弹出框组件重复打开时,资源重新加载

新增或者编辑内容使用同一个弹出框&#xff0c;如何使数据可以重新加载&#xff1f; 1、绑定时间戳&#xff0c;有副作用&#xff0c;屏幕会闪烁一下 <el-dialog :key"timer" > </el-dialog> 2、v-if和:visible.sync同时使用 <el-dialogv-if"…

沃尔沃Volvo EDI:运输标签测试流程

对接Volvo的EDI项目中&#xff0c;需要按照以下流程完成测试&#xff1a; 1.创建EDI连接并且传输第一个交付计划 2.请求发货通知以及运输标签 3.反馈关于发货通知以及运输标签的细节 4.使用生产数据进行最终的验证 在Volvo EDI项目案例中&#xff0c;详细介绍了有关连接测试以…

25届最近5年南京航空航天大学自动化考研院校分析!

南京航空航天大学 一、学校学院专业简介 二、考试科目指定教材 1、考试科目介绍 2、指定教材介绍 三、近5年考研分数情况 以下为南京航空航天大学&#xff0c;自动化学院近几年的考研分数情况。 以下为南京航空航天大学&#xff0c;航天学院近几年的考研分数情况。 以下为南京…

2710. 移除字符串中的尾随零

给你一个用字符串表示的正整数 num &#xff0c;请你以字符串形式返回不含尾随零的整数 num 。 示例 1&#xff1a; 输入&#xff1a;num "51230100" 输出&#xff1a;"512301" 解释&#xff1a;整数 "51230100" 有 2 个尾随零&#xff0c;移除…

React -- memo允许你的组件在 props 没有改变的情况下跳过重新渲染。

memo(Component, arePropsEqual?) 使用 memo 将组件包装起来&#xff0c;以获得该组件的一个 记忆化 版本。通常情况下&#xff0c;只要该组件的 props 没有改变&#xff0c;这个记忆化版本就不会在其父组件重新渲染时重新渲染。但 React 仍可能会重新渲染它&#xff1a;记忆化…

内容产品运营方案业务架构解析与实践探索

### 背景 在信息爆炸的时代背景下&#xff0c;内容产品运营成为各行各业竞争的重要环节。构建合理的内容产品运营方案业务架构&#xff0c;能够帮助企业更好地管理内容生产、推广和变现&#xff0c;提升品牌影响力和商业价值。 ### 业务架构设计 #### 1. 内容生产与管理 建立…

Chrome Plugin静态页面触发CSP如何解决CSP

CSP 内容安全策略 (Content Security Policy)&#xff1a; 内容安全策略是一种计算机安全标准&#xff0c;旨在防御跨站脚本、点击劫持等代码注入攻击&#xff0c;阻止恶意内容在受信网页环境中执行。 Manifest V3 对于内容安全策略有一些默认的设置&#xff0c;如禁止外部代码…

漏洞挖掘 | 记一次信息泄露到登入后台

这次是项目上遇到的一个洞&#xff0c;打开页面是一个红红的登录页面 这里就不放图了&#xff0c;浓浓的红色气息~ 老样子抓登录包 虽然是明文传输但是爆破弱口令无果 f12大法&#xff0c;审计源代码&#xff0c;在其中一个js文件中发现了这个接口 拼接URL进行访问 感觉有点东…

Python与CMD的交织之旅:探索、挑战与突破

Python与CMD的交织之旅&#xff1a;探索、挑战与突破 在编程的世界中&#xff0c;Python以其简洁明了的语法和强大的功能库赢得了广大开发者的青睐。而CMD&#xff0c;作为Windows操作系统的命令行工具&#xff0c;也是程序员们进行各种操作的重要工具。那么&#xff0c;Pytho…

微信小程序和支付宝小程序生成二维码

描述&#xff1a;前端生成二维码 一、页面 <canvas type"2d" style"width: 312px; height: 312px;" id"myQrcode"></canvas>二、微信小程序 安装 weapp-qrcode-canvas-2d 官方文档传送门 const query wx.createSelectorQuery()…

优质域名怎么注册?

在数字化时代&#xff0c;一个优质的域名对于企业和个人品牌的重要性不言而喻。它不仅能够提升品牌形象&#xff0c;还能带来可观的流量和潜在客户。然而&#xff0c;注册一个优质域名并非易事&#xff0c;它需要策略和技巧。本文将探讨如何注册一个优质域名&#xff0c;包括选…

qgroundcontrol编程入门:探索无人机控制的新境界

qgroundcontrol编程入门&#xff1a;探索无人机控制的新境界 在无人机技术的飞速发展下&#xff0c;qgroundcontrol作为一款强大的地面控制站软件&#xff0c;逐渐成为了无人机开发者和爱好者们的首选工具。然而&#xff0c;对于初学者而言&#xff0c;qgroundcontrol的编程入…

二、electron 的 BrowserWindow 的属性

const { app, BrowserWindow } require(electron)function createWindow() {let mainWin new BrowserWindow({x: 100,y: 100, //设置窗口的显示位置&#xff0c;相对于当前屏幕的左上角 show: true, //默认情况下创建一个窗口对象之后就会显示&#xff0c;设置为false&#x…

移动性:mobility

移动性管理原理 什么是移动性 一些术语 移动性管理办法 让网络&#xff08;路由器&#xff09;处理移动性&#xff1a;路由器通过常规路由表发送交换节点的永久地址 路由器互相交换各自移动节点位置信息&#xff0c;路由系统定期会通告自己这边新移动过来的移动设备信息端系统…

Spark大数据 IDEA开发词频统计项目

在使用IntelliJ IDEA进行Spark大数据项目的开发时&#xff0c;词频统计&#xff08;Word Count&#xff09;是一个常见的入门项目。以下是一个基本的步骤指南&#xff0c;用于在IDEA中创建和运行一个Spark词频统计项目&#xff1a; 1. 设置开发环境 确保你已经安装了以下软件…

【Linux】系统优化:一键切换软件源与安装Docker

引言 在Linux系统安装完成后&#xff0c;进行一些必要的初始化设置是提升系统性能和用户体验的关键。本文将重点介绍两个实用的一键脚本&#xff1a;LinuxMirrors提供的软件源切换脚本和Docker安装脚本。这两个脚本将帮助我们简化配置安装过程。 一键切换软件源脚本 在Linux…