首页 > 其他分享 >vue3 动态加载组件

vue3 动态加载组件

时间:2023-10-25 11:15:31浏览次数:37  
标签:dropitem const value 视图 vue3 组件 dropItems type 加载

<el-dropdown style="margin: 0px">
        <el-button type="primary"> 视图 </el-button>
        <template #dropdown>
          <el-dropdown-menu>
            <el-dropdown-item v-for="dropItem in dropItems" :key="dropItem" @click="changeView(dropItem.type)">{{
              dropItem.name
            }}</el-dropdown-item>
          </el-dropdown-menu>
        </template>
      </el-dropdown>

<div v-for="item in addiCostComponents" :key="item" v-show="viewType == item.type">
        <component
          :is="item.component"
          :baseData="tableData"
          :data="otherData[item.type]"
          :costElement="item.costElement"
          :ref="item.type"
          :tlid="form.TlId" />
      </div>


<script setup name="importAddicostNew">
// 匹配views里面所有的.vue文件 
const addicostModules = import.meta.glob('@/views/components/addicost/*.vue')
const addiCostComponents = ref([])
const dropItems = ref([{ type: 'base', name: '基本视图' }]) //切换视图数据
const viewType = ref('base') //dropItems选择的成本包类型

//切换视图
const changeView = (type) => {
  viewType.value = type
}

const importAddicostModules = async () => {
  addiCostComponents.value = []
  for (const path in addicostModules) {
    let viewName = path.split('/').pop().split('.')[0]
    let dropitem = dropItems.value.find((x) => x.type.split('_')[0].toLocaleLowerCase() == viewName)
    if (dropitem) {
      const component = await addicostModules[path]()
      addiCostComponents.value.push({ type: dropitem.type, component: component.default, costElement: dropitem.costElement })
      viewType.value = dropitem.type
    }
  }
}
</script>

组件文件夹路径如下:

 

标签:dropitem,const,value,视图,vue3,组件,dropItems,type,加载
From: https://www.cnblogs.com/wwr01/p/17786643.html

相关文章

  • 手把手教你在项目中引入Excel报表组件
    摘要:本文由葡萄城技术团队原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言GrapeCityDocumentsforExcel(以下简称GcExcel)是葡萄城公司的一款支持批量创建、编辑、打印、导入/导出Excel文件的服务端表格组件,能够高性......
  • 记录--vue3实现excel文件预览和打印
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助前言在前端开发中,有时候一些业务场景中,我们有需求要去实现excel的预览和打印功能,本文在vue3中如何实现Excel文件的预览和打印。预览excel关于实现excel文档在线预览的做法,一种方式是通过讲文档里的数据处理成......
  • 多个vue项目共用组件
    本文主要介绍引入本地的自己写的组件。1.准备3个vue2项目  demo-common文件夹里是组件在demo1和demo2中都需要使用 2.在demo-common文件夹里新建index.js文件,跟package.json同级。在index.js文件里导出在其他项目里需要用到的组件 3.分别在demo1和demo2的终端里输入......
  • Vue3中使用富文本编辑器
    在vue3中我们可以使用@wangeditor/editor、@wangeditor/editor-for-vue来实现其功能npm地址:https://www.npmjs.com/package/@wangeditor/editor-for-vue/v/5.1.12?activeTab=readme官网:Editor 1.安装pnpmadd@wangeditor/editor#或者npminstall@wangeditor/editor--save......
  • Jquery 下拉树下面是一个使用Combotree组件的简单案例:
    1、html <!DOCTYPEhtml><html><head><title>Combotree使用案例</title><linkrel="stylesheet"type="text/css"href="https://cdn.jsdelivr.net/npm/jquery-combotree/dist/jquery.combotree.min.css"......
  • Cesium 加载面数据 点数据 label
    Cesium加载geojosn数据exportconstcesiumUtils={viewer:null,dataSourceArr:[],addDataSource(geojsonData,config){Cesium.GeoJsonDataSource.load(geojsonData,{stroke:Cesium.Color.HOTPINK,fill:Cesium.Color.PINK......
  • 百度ASP.NET上传下载组件
     IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag        客户端每次提交下载请求时,服务端都要添加这两个响应头,以保证客户端和服务端将此下载识别为可以断点续传的下载......
  • pnpm : 无法加载文件
    报错pnpm:无法加载文件C:\Users\16978\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅https:/go.microsoft.com/fwlink/?LinkID=135170中的about_Execution_Policies。 解决办法windows11powershell的安全策略,将nrm命令视为了不安全......
  • DevExpress WinForms地图组件 - 轻松集成地图功能到应用程序
    DevExpressWinForms地图控件允许您在WinForms应用程序中合并地图服务,您可以选择现有的地图资源,如如Bing或OpenStreetMap,或者在公司网络中创建自己的地图数据服务器。DevExpressWinForms地图控件完全支持矢量和笛卡尔坐标地图。DevExpressWinForms有180+组件和UI库,能为Windows......
  • vue3 和 element-plus 实现指定单元格编辑
    思路1.获取到指定单元格的位置2.通过状态来判断是否展示编辑步骤1.定义变量去确定行和列lettableRowEditId=ref(null),//控制可编辑的每一行lettableColumnEditIndex=ref(null),//控制可编辑的每一列2.在el-table上绑定单元格的点击事件cell-click(单击)cell......