vue3+ts+element-plus实际开发之统一掉用弹窗封装

news2024/11/16 20:23:39

vue3+ts+element-plus实际开发之统一掉用弹窗封装

    • 插槽
      • 1. 官网介绍
        • 先理解 插槽、具名插槽、 作用域插槽、动态插槽名、具名作用域插槽属性和使用方法
      • 2. 统一调用弹窗封装dome实战
        • - 使用场景:
        • - 对`el-dialog`进行数据动态设置
        • - 新建一个ts文件用于统一存放组件,类似下边格式
        • - 封装一个通用弹窗

插槽

1. 官网介绍

官网文档地址

先理解 插槽、具名插槽、 作用域插槽、动态插槽名、具名作用域插槽属性和使用方法

2. 统一调用弹窗封装dome实战

- 使用场景:

大屏看板中,小模块查看详情信息功能

- 对el-dialog进行数据动态设置

新建一个one-dialog.vue文件,并修改成自己需要的组件。

<template>
  <el-dialog
    v-model="dialogTableVisible"
    :title="title"
    :width="width"
    :top="top"
    :custom-class="customClass"
    :style="{ maxWidth: width, minWidth: width }"
    destroy-on-close
    align-center
    append-to-body
  >
    <slot name="dialog" />
  </el-dialog>
  <!-- 定义一个 @click 事件监听器来绑定点击事件到组件的 showDialog 方法上。 -->
  <div style="cursor: pointer" @click="showDialog">
    <!-- slot可以可以包裹在父组件要设置点击事件的标签外层 ,来实现父组件内调起弹窗-->
    <slot />
  </div>
</template>
<script setup lang="ts">
import { ref } from "vue";

defineProps({
  title: String,
  width: [String, Number],
  customClass: String,
  top: [String, Number],
});

const dialogTableVisible = ref(false);

const showDialog = () => {
  dialogTableVisible.value = true;
};
</script>
<style scoped lang="scss">
</style>
- 新建一个ts文件用于统一存放组件,类似下边格式
export { default as Dialogone } from './one.vue';
export { default as Dialogtwo} from './two.vue';
export { default as DialogFancyButton} from './fancyButton.vue';
export { default as TableList} from '@/views/elementPlus/tableList.vue';
- 封装一个通用弹窗
  1. 新建组件one.vue,并且在one.vue里边使用封装好的one-dialog.vue组件
<template>
  <!-- 弹窗 -->
  <Dialogone title="表格详情" width="700px" :dialogTableVisible="true">
    <!-- 使用插槽向固定位置输出内容 #是v-slot简写,这个SleFone要与父组件使用时候<template #SleFone>一致-->
    <slot name="SleFone"> </slot>
    <template #dialog>
      <TableList v-if="type==='1'"></TableList>
      <CarouselOne v-if="type==='2'"></CarouselOne>
    </template>
  </Dialogone>
</template>

<script setup lang="ts">
import { Dialogone } from "../../../components/index";
//这里我随便拿了两个页面做组件使用,
import { TableList } from "../../../components/index";
import { CarouselOne } from "../../../components/index";

defineProps({
  type: String,
});
</script>
<style scoped lang="scss">
</style>
  1. 使用示例
    我直接在表格详情使用的,点击详情掉用组件 在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
3. 多个页面使用时候统一引用

  • 新建一个GlobalComponents.ts文件
import { App } from 'vue';
import {SleFone} from './index';


// 创建一个 install 函数,接收 Vue 应用实例作为参数
const install = (app: App) => {
    // 在 Vue 应用实例中注册 SleFone 组件
    app.component('SleFone', SleFone);
    // 在这里可以注册其他全局组件
    // app.component('AnotherComponent', AnotherComponent);
  };
  
  // 导出 install 函数
  export default { install };
  • 在main.ts中统一引入
//自定义组件
import GlobalComponents from './components/GlobalComponents';
const app = createApp(App)
app.use(GlobalComponents);
app.mount('#app');
  • 页面中不需要每个引用,可以直接使用
 <SleFone type="1">
          <template #SleFone>
          //一下内容可以自定义
            <el-button
              link
              type="primary"
              size="small"
              @click="detailsClick(scope.row)"
            >
              点击唤起弹窗
            </el-button>
            </template>
            </SleFone>
  • 如果出现套盒子情况,2种处理方式
  1. 第一种处理方式

如果我们想在父组件没有提供任何插槽内容时在 内渲染“Submit”,只需要将“Submit”写在 标签之间来作为默认内容:

 <button type="submit">
  <slot name="SleFone2">
    Submit <!-- 默认内容 -->
  </slot>
</button>

但如果我们提供了插槽内容:=
那么被显式提供的内容会取代默认内容:

      <template #SleFone2>
          <span>新内容</span> 
        </template>

根据上边插槽特性,反向使用
在这里插入图片描述
在这里插入图片描述
2. 第二种处理方式: 更换唤起弹窗的方式,根据实际情况也已使用全局变量控制

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

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

相关文章

Windows系统安装配置Everything结合内网穿透实现公网环境搜索本地文件

文章目录 前言1.软件安装完成后&#xff0c;打开Everything2.登录cpolar官网 设置空白数据隧道3.将空白数据隧道与本地Everything软件结合起来总结 前言 要搭建一个在线资料库&#xff0c;我们需要两个软件的支持&#xff0c;分别是cpolar&#xff08;用于搭建内网穿透数据隧道…

2024年5月软考初级《信息处理技术员》报名考试全流程梳理

2024年软考信息处理技术员考试报名时间节点&#xff1a; 报名时间&#xff1a;上半年3月18日到4月15日&#xff0c;下半年8月19日到9月15日&#xff08;各地区报名时间不同&#xff0c;具体日期见官方通告&#xff09; 准考证打印时间&#xff1a;上半年5月20日起&#xff0c…

项目文章|真菌ChIP-seq+RNA-seq解析脱落酸生物合成的调控机制

组蛋白翻译后修饰是表观遗传调控的主要机制之一&#xff0c;已被证明在基因表达的调控中发挥重要作用&#xff0c;参与真菌发育、感染相关的形态发生、环境应激反应、次级代谢产物的生物合成和致病性。我们分享过不少真菌组蛋白修饰的文章&#xff0c;今天接着带来一篇利用ChIP…

uniapp使用Echarts图表H5显示正常 打包app显示异常

uniapp使用Echarts在H5页面调试 调试完在H5正常显示 然后通过安卓机调试的时候 发现直接空白了 还有这个爆错 Initialize failed: invalid dom 我有多个图表、图表是通过v-for循环出来的 解决方案 原来是yarn直接安装Echarts 然后改成本地JS文件引入 gitbub文件地址 — dist/…

大屏动效合集更更更之实现百分比环形

实现效果 参考链接&#xff1a; https://pslkzs.com/demo/pie/demo1.php 写在最后&#x1f352; 源码&#xff0c;关注&#x1f365;苏苏的bug&#xff0c;&#x1f361;苏苏的github&#xff0c;&#x1f36a;苏苏的码云

华院计算 | 意大利早期的三位女学者——历史没有忘记

意大利历史上名人很多&#xff0c;其中三位先驱女学者特别值得后人铭记。哲学家艾琳娜皮斯科皮亚&#xff08;Elena Lucrezia Cornaro Piscopia&#xff0c;1646年6月5日-1684年7月26日&#xff09;于1678年从帕多瓦大学&#xff08;Universit di Padova&#xff09;获得哲学博…

SAP MRP允许过去开始日期简介

在SAP系统中,关于“过去开始日期”的配置点,通常涉及到物料需求计划(MRP)的运行和计划订单的处理。特别是在MRP运行后,如果发现计划订单的日期不符合预期,可能需要进行相应的调整。 之前在项目中就有用户提出MRP跑出的结果不允许在过去的时间,必须要在当前日期或者在当前…

【华为Datacom数通认证】HCIA-HCIP-HCIE

华为认证课程概述 华为认证是华为技术有限公司(简称"华为")基于"平台生态"战略&#xff0c;围绕"云-管-端"协同的新ICT技术架构&#xff0c;打造的业界覆盖ICT领域最广的认证体系&#xff0c;包含"ICT技术架构认证"、"ICT开发者…

解决Could not autowire. No beans of ‘UserMapper‘ type found问题

问题&#xff1a; 解决方法1 降低spring版本 失败 解决方法2 查看数据库连接&#xff0c;无作用 解决方法3 polo&#xff0c;Mapper不在同一级&#xff0c;修改&#xff0c;但无作用 解决方法4 将Autowrited改为Autowrited(required false)&#xff0c;无作用 解决方法…

vulhub中GIT-SHELL 沙盒绕过漏洞复现(CVE-2017-8386)

GIT-SHELL 沙盒绕过&#xff08;CVE-2017-8386&#xff09;导致任意文件读取、可能的任意命令执行漏洞。 测试环境 为了不和docker母机的ssh端口冲突&#xff0c;将容器的ssh端口设置成3322。本目录下我生成了一个id_rsa&#xff0c;这是ssh的私钥&#xff0c;连接的时候请指…

人免疫球蛋白E (Human IgE) 单克隆抗体—BioPorto

免疫反应是指机体对于异己成分或者变异的自体成分做出的防御反应&#xff0c;当免疫系统对正常无害物质产生不适当反应时&#xff0c;则称为变态反应&#xff0c;即过敏。免疫球蛋白E&#xff08;IgE&#xff09;是一类与过敏反应有关的抗体&#xff0c;通常在人类血清蛋白中含…

【问题解决】AttributeError: module ‘tensorflow‘ has no attribute ‘io‘

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

滤波器自动化测试之插入损耗测试方法与标准

插入损耗是指信号通过滤波器后&#xff0c;输出信号与输入信号之间的功率差距。插入损耗包括共模插入损耗和差模插入损耗两种。插入损耗越小&#xff0c;说明滤波器对输入信号的衰减程度就越低&#xff0c;滤波器的性能就越好。作为滤波器的重要指标之一&#xff0c;插入损耗测…

广告电商模式:三方共赢的创新路径与未来趋势

随着互联网的迅猛发展和普及&#xff0c;电子商务与广告行业也在经历前所未有的变革与创新。在这样的背景下&#xff0c;广告电商模式作为一种新兴的商业模式&#xff0c;正逐渐崭露头角。它将广告与电子商务紧密融合&#xff0c;通过精准营销和用户参与&#xff0c;实现了广告…

C语言文件操作 w模式

先上菜 #include<stdlib.h> #include<stdio.h> int main() { FILE* pfWrite fopen("test.txt", "w"); if (pfWrite NULL) { printf("%s\n", strerror(errno)); return 0; } //写文件 fputc(b…

Odoo17免费开源ERP开发技巧:如何在表单视图中调用JS类

文/Odoo亚太金牌服务开源智造 老杨 在Odoo最新V17新版中&#xff0c;其突出功能之一是能够构建个性化视图&#xff0c;允许用户以独特的方式与数据互动。本文深入探讨了如何使用 JavaScript 类来呈现表单视图来创建自定义视图。通过学习本教程&#xff0c;你将获得关于开发Odo…

xiaohongshu Shield 8.27

支持自己传输 xy-ter-str, 进行设备绑定计算 也支持自动请求初始化设备&#xff0c;无需 xy-ter-str 传输参数&#xff1a;url , xy-platform-info, xy-common-params,device_id 以及 xy-ter-str 精准计算&#xff0c;纯算法源码还原魔改算法&#xff0c;非jar 非unidbg 非调…

hash+前缀和:和可被k整除的子数组

题目 给定一个整数数组 nums 和一个整数 k &#xff0c;返回其中元素之和可被 k 整除的&#xff08;连续、非空&#xff09; 子数组 的数目。 子数组 是数组的 连续 部分。 示例 1&#xff1a; 输入&#xff1a;nums [4,5,0,-2,-3,1], k 5 输出&#xff1a;7 解释&#x…

VBA技术资料MF131:代码执行过程中实现毫秒等待

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

WordPress上传大于 2560 像素的图片文件

本周有一个Hostease客户&#xff0c;购买美国Linux主机创建WordPress站点&#xff0c;在WP后台上传图片&#xff0c;遇到错误信息&#xff0c;联系我们问询解决方案。Linux主机提供cPanel面板&#xff0c;集成一键安装WordPress与建站。接下来&#xff0c;我们分享这个问题的解…