vue使用emit控制改变父组件的值,实现子组件的显示与隐藏

vue使用emit控制改变父组件的值,实现子组件的显示与隐藏

需求概述

父组件在提交表单后,弹框进行提示,子组件是一个弹框。

vue版本

v2.x

实现原理

在父组件内建立控制器isShowModal,使用v-if来控制子组件的显示与隐藏。在子组件通过emit操作其父组件方法changeShowHide,改变自己的控制器isShowModal的值,实现弹框的隐藏。

优缺点分析

**优点:**同一父组件如果需要显示多个,直接多建立几个组件和控制器即可,无需改变子组件代码,耦合性较低。

效果图

在这里插入图片描述

完整代码demo

父组件

// 父组件
<template><div class="wCen"><h2>父组件调用弹框子组件</h2><el-button type="primary" @click="changeShowHide(true)" >显示弹框--{{isShowModal}}</el-button><el-button type="primary" @click="changeShowHide2(true)">显示弹框2-{{isShowModal2}}</el-button><el-button type="primary" @click="changeShowHide3(true)">显示弹框3-{{isShowModal3}}</el-button><Child v-if="isShowModal" @changeShowHide="changeShowHide(false)"></Child><Child v-if="isShowModal2" @changeShowHide="changeShowHide2(false)"></Child><Child v-if="isShowModal3" @changeShowHide="changeShowHide3(false)"></Child></div>
</template><script>
import Child from "@/components/common/Modal/index.vue";
export default {props: {},components: {Child,},data() {return {isShowModal: false,isShowModal2: false,isShowModal3: false,};},computed: {},mounted() {},methods: {changeShowHide(flag){this.isShowModal=flag},changeShowHide2(flag){this.isShowModal2=flag},changeShowHide3(flag){this.isShowModal3=flag}},
};
</script><style lang="scss" scoped>
.wCen{width:1200px;margin:20px auto;
}
</style>

子组件

<template><div><div class="modal" ><div class="modal_con"><!-- <img src="@/assets/images/icon_close_white.svg" alt="" class="modal_con_close" @click="close"/> --><p class="modal_con_close" @click="close">X</p><p class="modal_con_t">提示</p><p class="modal_con_desc">提交成功!</p><p @click="close" class="modal_con_btn">确定</p></div></div></div>
</template><script>
export default {data() {return {};},computed: {},mounted() {},methods: {close(){this.$emit("changeShowHide");},},
};
</script><style lang="scss" scoped>.modal{width: 100%;height: 100%;left:0;top:0;right:0;bottom:0;display: flex;justify-content: center;align-items: center;position: fixed;z-index: 99999099999999;background: rgba(200,200,200,.5);&_con{$r:10px;width: 300px;background: #fff;border-radius: $r;position: relative;display: flex;justify-content: center;align-items: space-between;flex-direction: column;box-shadow: 0px 7px 18px 0px rgba(0, 0, 0, 0.21);&_close{position: absolute;right:-22px;top: -22px;width: 26px;flex: 0 0 26px;background-color: #666;border-radius: 50%;padding:6px;cursor: pointer;color: #fff;height: 26px;display: flex;justify-content: center;align-items: center;padding: 0;margin: 0;font-size: 12px;user-select: none;}&_t{background-color: rgba(208,3,0,.5);border-top-left-radius: $r;border-top-right-radius: $r;padding:8px 14px;color: #fff;overflow: hidden;font-weight: bold;}&_desc{font-size: 16px;display: flex;justify-content: center;align-items: center;padding-top: 10px;padding-bottom: 20px;}&_btn{background-color: rgba(208,3,0,.6);padding:5px 12px;display: inline-flex;justify-content: center;align-items: center;border-radius: 4px;color: #fff;align-self: center;font-size: 14px;cursor: pointer;user-select: none;margin-bottom: 10px;}}@media (max-width:767px){&_con{width: 240px;&_t{padding:6px 14px;}&_desc{padding-bottom: 10px;}}}}
</style>

如果您觉得此文章对您有帮助,请点赞收藏评论,让更多的同行少走弯路!如果您觉得此文章有不足或者错误,欢迎评论/私信进行指导

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

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

相关文章

强化学习从基础到进阶-案例与实践[5.1]:Policy Gradient-Cart pole游戏展示

强化学习从基础到进阶-案例与实践[5.1]&#xff1a;Policy Gradient-Cart pole游戏展示 强化学习&#xff08;Reinforcement learning&#xff0c;简称RL&#xff09;是机器学习中的一个领域&#xff0c;区别与监督学习和无监督学习&#xff0c;强调如何基于环境而行动&#x…

win10安装配置PostgreSQL

win10安装配置PostgreSQL 1 下载安装PostgreSQL ①进入官网https://www.postgresql.org/&#xff0c;点击页面中心处的download 也可以直接跳过下面的步骤(下面的步骤主要是为了帮助大家了解一般外国软件是如何从官网进入下载页面)&#xff0c;直接进入下载页面&#xff0c;链…

java的注解方式和xml方式这两种方式对数据库进行操作详解

首先需要引入mybatisplus包 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.1</version> </dependency>第一种注解方式&#xff1a;参数是通过#{}来接收的 p…

LLaMA模型微调版本 Vicuna 和 Stable Vicuna 解读

Vicuna和StableVicuna都是LLaMA的微调版本&#xff0c;均遵循CC BY-NC-SA-4.0协议&#xff0c;性能方面Stable版本更好些。 CC BY-NC-SA-4.0是一种知识共享许可协议&#xff0c;其全称为"署名-非商业性使用-相同方式共享 4.0 国际"。 即 用的时候要署名原作者&#x…

信号链噪声分析18

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 提示&#xff1a;这里可以添加技术概要 到目前为止&#xff0c;我们考虑的是基带采样情况&#xff0c;即所有目标信号均位于第一奈奎斯特区内。 图 显示了另外一种情况&#xff0c;其中采样信号频带局限于第一奈奎斯…

碳排放预测模型 | Python实现基于LR线性回归的碳排放预测模型

文章目录 效果一览文章概述研究内容源码设计参考资料效果一览 文章概述 碳排放预测模型 | Python实现基于LR线性回归的碳排放预测模型 研究内容 碳排放被认为是全球变暖的最主要原因之一。 该项目旨在提供各国碳排放未来趋势的概述以及未来十年的全球趋势预测。 其方法是分析这…

【前端】导航栏html(ul+li)/css/js(jq)

引入jq <script src"https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script> css代码 <style>ul {list-style: none;margin: 0;padding: 0;}li {cursor: pointer;}.color-white {color: #FFFFFF !important;background-color: rgb…

9.用python写网络爬虫,完结

前言 这是python网络爬虫的最后一篇给大家做个总结&#xff0c;且看且珍惜把&#xff01; 截止到目前&#xff0c; 前几章本书介绍的爬虫技术都应用于一个定制网站&#xff0c;这样可以帮助我们更加专注于学习特定技巧。而在本章中&#xff0c;我们将分析几个真实网站&#xff…

桥接模式(Bridge)

定义 桥接是一种结构型设计模式&#xff0c;可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构&#xff0c;从而能在开发时分别使用。 前言 1. 问题 假如你有一个几何形状&#xff08;Shape&#xff09;类&#xff0c; 从它能扩展出两个子类&#xff1a…

UE5.1.1 C++从0开始(15.作业4个人作业分享)

教程链接&#xff1a;https://www.bilibili.com/video/BV1nU4y1X7iQ 好吧这个作业应该是之前写的&#xff0c;但是我发现我没写&#xff0c;后面我又回去自己写了一遍再看代码&#xff0c;感觉上大差不差&#xff0c;各位可以看着我的和老师的还有自己的对比下。 SBTService_…

8.10 TCP是如何实现可靠传输的

目录 TCP 最主要的特点 面向流的概念 Socket 有多种不同的意思 TCP是如何实现可靠传输的&#xff1f; A 如何知道 B 是否正确收到了 M1 呢&#xff1f; 确认丢失 确认迟到 连续 ARQ 协议 累计确认 TCP报文段的首部格式 TCP 最主要的特点 TCP 是面向连接的运输层协议&a…

自动化测试验证码tesseract安装以及python联调

前提 经常会遇到登录系统时候需要输入动态验证码的情况&#xff0c;但是自动化如何识别图片然后登陆系统&#xff1f; 需要用到pytesseract识别验证码图片以及PIL图像处理方法 import pytesseract from PIL import Image, ImageEnhance1、tesseract安装 OCR&#xff0c;即O…