this.$emit(‘update:isVisible‘, false)作用

news2024/11/29 20:45:27

这个写是不是很新颖,传父组件传值!这是什么鬼。。。

假设你有以下逻辑业务。在A页面弹出一个组件B,A组件里面使用B组件,是否展示B组件你使用的是baselineShow变量控制!

<BaselineData :isVisible.sync="baselineShow" @addNewCrfAction="addNewCrfAction"/>

而B组件里面是你封装的el-dialog!如下,B组件内的代码为:

<template>
    <el-dialog title="选择CRF" :visible.sync="isVisible" width="850px"
        append-to-body
        :close-on-click-modal="closeOnClickModal"
        :show-close="showClose"
        :before-close="handleClose">

        <div class="mt-20 flex wrap main-box" v-loading="apiLoading">
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
        </div>
        <span slot="footer" class="dialog-footer">
            <el-link type="primary" class="mr-15" @click="checkedClear">清空</el-link>
            <el-button type="primary" @click="submit">确定</el-button>
            <el-button type="plain" @click="cancel">取消</el-button>
        </span>
    </el-dialog>
</template>

<script>
import crudCrfs from '@/api/crf/template'
export default {
    props: {
        isVisible: {
            type: Boolean,
            default:false
        },
        closeOnClickModal: {
            type: Boolean,
            default:true
        },
        showClose: {
            type: Boolean,
            default:true
        },
        showAddOption: {
            type: Boolean,
            default:true
        },
    },
    data() {
        return {
            list: [],
            apiLoading:true
        }
    },
    created(){
        crudCrfs.getAllCrfs().then(res=>{
            res.forEach(e=>{
                e.selected = false
                e.subTitle = '包含' + e.groupCount + '个题组,' + e.componentCount + '字段'
                this.list.addObject(e)
            })
            this.apiLoading = false
        })
    },
    methods: {
        handleClose() {
            this.$emit('update:isVisible', false);
        },
        checkedItems(i, num) {
            i.selected = !i.selected
        },
        checkedClear() {
            this.list.filter(e=>e.selected).forEach(element => {
                element.selected = false
            });
        },
        submit() {
            let activeList = []
            this.list.filter(e=>e.selected).forEach((element,index) => {
                // activeList.addObject(index)
                activeList.addObject(element)
            });
            this.$emit('baselineSubmit', activeList)
            this.$emit('update:isVisible', false);
            this.dataBlock.callLogicDataBlock("addedBaselineSuccess", { "state": 'success' })
        },
        addNewCrfAction(){
            this.$emit('update:isVisible', false);
            this.$emit('addNewCrfAction',{})
        },
        cancel(){
            this.$emit('update:isVisible', false);
            this.$emit('cancelAction',{})
        }
    }
}
</script>

<style>
    .addCrf {
        height: 60px;
        width: 200px;
        line-height: 60px;

        border: 1px dashed lightgray;

        background-color: rgb(245, 245, 245);
    }
    .items-w {
        width: 244px;
    }
    .main-box {
        max-height: 300px;
        overflow-y: auto;
    }
    .items-check {
        right: 10px;
        top: 25px;
    }
</style>

在A页面弹出B组件:

此时当你在B组件内部关闭弹窗时,你就不得不在A组件里面同步更新A组件里面的变量baselineShow!否则下次无法弹出此页面。那如何在B组件内部同步修改A组件内的值呢?

核心代码:告诉B组件哪个变量要进行同步修改,进行如下标记;

:isVisible.sync="baselineShow"

切换A里面使用的时候不能这样使用: v-if="baselineShow",如果这样使用则达不到预期的效果!!

<BaselineData v-if="baselineShow" :isVisible.sync="baselineShow" @addNewCrfAction="addNewCrfAction"/>

在B组件内部关闭弹窗时调用:则不必再去手动维护A组件内部的变量baselineShow!

this.$emit('update:isVisible', false);

同样B组件内部的props定义也要注意!

props: {
        isVisible: {
            type: Boolean,
            default:false
        },
}

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

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

相关文章

鸿蒙OS应用开发之数据类型

前面学习了一个简单的例子&#xff0c;这是多年来学习应用程序开发的经典路径&#xff0c;在这里也是这种待遇&#xff0c;通过这样的学习明白了一个简单应用是怎么样构成的&#xff0c;知道它是怎么运行输出的。在这个基础之上&#xff0c;你还是不会开发应用程序的&#xff0…

RabbitMQ学习二

RabbitMQ学习二 发送者的可靠性生产者连接重试机制生产者确认机制开启生产者确认定义ReturnCallback定义confirmCallback MQ的可靠性交换机和队列持久化消息持久化LazyQueue控制台配置Lazy模式代码配置Lazy模式 消费者的可靠性失败重试机制失败处理策略业务幂等性唯一消息ID业务…

在Deepin中安装x11vnc工具并结合内网穿透软件实现远程访问桌面

文章目录 1. 安装x11vnc2. 本地远程连接测试3. Deepin安装Cpolar4. 配置公网远程地址5. 公网远程连接Deepin桌面6. 固定连接公网地址7. 固定公网地址连接测试 x11vnc是一种在Linux系统中实现远程桌面控制的工具&#xff0c;它的原理是通过X Window系统的协议来实现远程桌面的展…

Tair(3):Tair入门demo

新建一个maven项目 1 导入依赖 <dependency><groupId>com.taobao.tair</groupId><artifactId>tair-client</artifactId><version>2.3.5</version></dependency><dependency><groupId>com.alibaba</groupId>…

智能优化算法应用:基于厨师算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于厨师算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于厨师算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.厨师算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

项目管理工具在电商新品运营中的应用与实践

运营永远是电商的核心命题&#xff0c;新品开发完成后&#xff0c;就进入了新品的运营工作&#xff0c;包括上架前的准备、上架后的推广、商品定位等&#xff0c;且运营一般同时负责多个新品的运营&#xff0c;任务多、时间紧、信息分散&#xff0c;如果缺乏统一管理入口&#…

电脑中环境变量的设置方法

环境变量是在操作系统中一个具有特定名字的对象&#xff0c;它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量&#xff0c;当要求系统运行一个程序而没有告诉它程序所在的完整路径时&#xff0c;系统除了在当前目录下面寻找此程序外&a…

Mysql- 流程函数-(If, CASE WHEN)的使用及练习

目录 4.1 If函数语法格式 4.2 CASE WHEN 条件表达式格式 4.3 update与 case when 4.4 练习题1 4.5 练习题2 4.6 练习题3-行转列 4.7 牛客练习题 4.8 LeetCode练习题 4.1 If函数语法格式 IF(expr1,expr2,expr3) 解释&#xff1a; 如果表达式expr1true(expr1 <>…

java服务调用mysql报错

一、前言 前端服务调用后端服务时出现以下报错&#xff0c;原因是使用mysql5.7版本数据库中存在ONLY_FULL_GROUP_BY这个配置项导致的不兼容 MySQLSyntaxErrorException: Expression #32 of SELECT list is not in GROUP BY clause and contains nonaggregated column demeter…

系列九、SpringBoot + MyBatis + Redis实现分布式缓存

一、缓存介绍 1.1、概述 缓存是计算机内存中的一段数据&#xff08;PS&#xff1a;内存中的数据具有读写快、断电立即消失的特点&#xff09;&#xff0c;合理地使用缓存能够提高网站的吞吐量和运行效率&#xff0c;减轻数据库的访问压力。那么哪些数据适合缓存呢&#xff1f;…

C++笔记之通过静态类成员变量的方式在不同的类之间传递参数

C笔记之通过静态类成员变量的方式在不同的类之间传递参数 code review! 在C中&#xff0c;可以使用静态类成员变量作为一种在不同类之间传递参数的方式。静态类成员变量是类的所有对象之间共享的变量&#xff0c;它们存在于类的内部&#xff0c;但不属于任何特定的类对象。 …

qt:QMessageBox的常见用法

头文件&#xff1a;#include <QMessageBox> Infomation消息对话框 初始化格式&#xff1a; QMessageBox * msgBox new QMessageBox(QMessageBox::Information, "我是标题", "我是提示文字", 按钮); 按钮可以是以下取值&#xff0c;会在按键上显示…

Python开发运维:Python调用K8S API实现资源管理

目录 一、实验 1.Python操作K8S API获取资源 2.Python操作K8S API创建deployment资源 3.Python操作K8S API删除k8s资源 4.Python操作K8S API修改k8s资源 5.Python操作K8S API查看k8s资源 二、问题 1.Windows11安装kubernetes报错 2.Python通过调用哪些方法实现Pod和De…

变容二极管测量

测量变量二极管一般有两种方法&#xff1a;一是搭建偏置电路&#xff0c;用LCR电桥测量电容&#xff1b;二是搭建一个VCO&#xff0c;通过测量频率&#xff0c;简接测量变容二极管的电容值。 正好手里有许老师LCR&#xff0c;搭建一个简单的测试电路即可&#xff0c;电路图如下…

复旦量化多策略公开课总结

《掘金之心公众号&#xff1a;gnu_isnot_unix》前Citadel现自营交易与量化管理&#xff0c;分享热点&#xff0c;主观&#xff0c;量化交易内容。活在当下&#xff0c;终身学习 - 给在职却对未来始终迷茫的人的公众号。借此想告诉不断努力&#xff0c;对生活充满热情的读者们&a…

基于ssm在线云音乐系统的设计与实现论文

摘 要 随着移动互联网时代的发展&#xff0c;网络的使用越来越普及&#xff0c;用户在获取和存储信息方面也会有激动人心的时刻。音乐也将慢慢融入人们的生活中。影响和改变我们的生活。随着当今各种流行音乐的流行&#xff0c;人们在日常生活中经常会用到的就是在线云音乐系统…

洛谷P1450 硬币购物

传送门&#xff1a; P1450 [HAOI2008] 硬币购物 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P1450 题干&#xff1a; 题目描述 共有 4 种硬币。面值分别为 c1​,c2​,c3​,c4​。 某人去商店买东西&#xff0c;去了 n 次&#xff0c;对于…

【Angular开发】Angular在2023年之前不是很好

做一个简单介绍&#xff0c;年近48 &#xff0c;有20多年IT工作经历&#xff0c;目前在一家500强做企业架构&#xff0e;因为工作需要&#xff0c;另外也因为兴趣涉猎比较广&#xff0c;为了自己学习建立了三个博客&#xff0c;分别是【全球IT瞭望】&#xff0c;【架构师酒馆】…

eclipse中maven的配置

Maven下载地址&#xff1a;https://maven.apache.org/download.cgi 下载完成以后解压到非中文目录&#xff0c;建议放一个比较大的盘符下&#xff0c;因为Maven会一直从网上更新各种库存放在这个目录下&#xff0c;慢慢的会变得很大。 Maven环境变量配置 创建环境变量 在桌…

Diary22-全网最全的CSS3.0讲解

CSS学习 1.认识CSS 1.1什么是CSS CSS&#xff1a;Cascading Style Sheet——层叠级联样式表 CSS&#xff1a;表现&#xff08;美化网页&#xff09; 字体&#xff1b;颜色&#xff1b;边距&#xff1b;高度&#xff1b;宽度&#xff1b;背景图片&#xff1b;网页定位&…