首页 > 其他分享 >this.$emit失效

this.$emit失效

时间:2024-05-16 15:41:23浏览次数:13  
标签:... listQuery2 handleClear 组件 失效 emit hyTabs

这一次通过$emit实现子组件调用父组件的方法时,发现失效,耗了一个多小时,现在记录一下:

错误代码:

父组件

<pointDetail ref="pointDetail" v-if="pointDetailVisible" @set-hytabs="setHyTabs" 
           @point-detail-close="pointDetailClose" @handle-clear="handleClear" @load-circle="loadCircle" @pass-listquery2tmp="passListQuery2Tmp"/>

其中handleClear方法将子组件关闭

handleClear(){
        ...this.pointDetailVisible = false;
        ...
      },

子组件

pointQuery(isPrice) {
    ...
      this.$emit('handle-clear');
      ...
      gisDataQuery.getPointListNew(this.listQuery2).then((response) => {if (response.data) {
      ...
          that.$emit('set-hytabs',[])
          let hyTabs = []
          this.listQuery2.typeCode.forEach(code => {
            this.unitTypeOptions1.forEach(item => {
              if(item.itemCode == code){
                hyTabs.push(item.itemName);
              }
            });
          });
          that.$emit('set-hytabs',hyTabs)
          this.loadData(pointList,[],centerPoint);
          if(pointList.length > 0){
            that.$emit('pass-listquery2tmp',this.listQuery2)
            that.$emit('load-circle');
          }
        } else {
          this.$message.warning("查询失败");
        }
      }).catch((error) => {
        console.log(error);
      });
    },

发现子组件的pointQuery方法调用后台接口后,4个that.$emit都失效。

通过百度发现一篇文章:

才发现在handleClear方法中将子组件关闭,导致事件被销毁。

解决办法:父组件handleClear方法中不关闭子组件,子组件执行所有that.$emit后关闭子组件。

handleClear(){
        ...
        // this.pointDetailVisible = false;
        ...
      },

子组件最后再关闭子组件。

pointQuery(isPrice) {
      ...
      this.$emit('handle-clear');
    ...
      gisDataQuery.getPointListNew(this.listQuery2).then((response) => {
      ...
          that.$emit('set-hytabs',[])
          let hyTabs = []
          this.listQuery2.typeCode.forEach(code => {
            this.unitTypeOptions1.forEach(item => {
              if(item.itemCode == code){
                hyTabs.push(item.itemName);
              }
            });
          });
          that.$emit('set-hytabs',hyTabs)
          this.loadData(pointList,[],centerPoint);
          if(pointList.length > 0){
            that.$emit('pass-listquery2tmp',this.listQuery2)
            that.$emit('load-circle');
          }
        } else {
          this.$message.warning("查询失败");
        }
        that.$emit('point-detail-close')
      }).catch((error) => {
        console.log(error);
      });
    },

 

标签:...,listQuery2,handleClear,组件,失效,emit,hyTabs
From: https://www.cnblogs.com/zwh0910/p/18196065

相关文章

  • MacOS环境变量source生效但重启后又失效
      .bash_profile和.zshrc都是macos系统重环境变量配置的文件,但是两者有不同之处。.bash_profile:在执行source~/.bash_profile,只在当前窗口生效,但关闭当前终端窗口或者mac关机重启后不会再生效。.zshrc:在执行source~/.zshrc,这是永久生效的,mac每次启动会自动执行source......
  • OpenTelemetry agent 对 Spring Boot 应用的影响:一次 SPI 失效的
    背景前段时间公司领导让我排查一个关于在JDK21环境中使用SpringBoot配合一个JDK18新增的一个SPI(java.net.spi.InetAddressResolverProvider)不生效的问题。但这个不生效的前置条件有点多:JDK的版本得在18+SpringBoot3.x还在额外再配合使用-javaagent:openteleme......
  • 多线程循环控制字段失效造成死循环的坑
    编程的时候遇到一个场景:A,B两个线程,B是一个while(flag),有个控制字段flag,刚开始是trueB会一直循环,A某个情况回把flag置为false,但是如果B的循环里什么都没干,就一直不退出,陷入死循环本来以为是哪里逻辑写错了,于是在B里面加入了一个printf,没想到结果就能正常退出了 ......
  • mybatisPlus多数据源的使用&使用 lambdaQuery 导致多数据源失效
    依赖<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.5.2</version></dependency>配置文件:spr......
  • gitignore失效情况处理
    参考:https://blog.csdn.net/weixin_36977069/article/details/130871529基本就是转载,我怕作者后期删了,这边做个记录 解决方法:git清除本地缓存(改变成未track状态),然后再提交:gitrm-r--cached.gitadd.gitcommit-m‘update.gitignore’gitpush-uoriginmaster......
  • Spring事务失效
    Spring中事务失效的场景有哪些异常捕获处理,抛出检查异常和非public方法。异常捕获处理原因:事务通知只有捉到了目标抛出的异常,才能进行后续的回滚处理,如果目标自己处理掉异常,事务通知无法知悉。解决:在catch块添加thrownewRuntimeException(e)手动抛出。抛出检查异常原因:Spr......
  • springboot seata 全局捕获异常失效
    问题:Springboot使用@ControllerAdvice或@RestControllerAdvice全局捕获异常时,捕获不到自己抛出的相应异常首先看一下全局异常组件有么有被扫描到如何查看,很简单只需要写一段类加载打印代码,如下 如果启动时,打印了你写的字符串就说明时烧苗到了 这就说明是其他的问题了,那就......
  • Mysql-索引失效
    0.背景借鉴抖音“老猿说开发”总结的一句口诀。索引可能失效场景如下:模型数空运最快序号关键字含义解释1模模糊查询当使用模糊查询(比如使用LIKE操作符)时,如果查询条件的开头使用了通配符(如%),那么索引可能会失效。因为通配符在查询开始位置时,数据库无法利用索引进......
  • EBS:物料失效 检查
    EBS 物料失效时,提示: 存在现有量,或者此物料未完成的交货事务处理。请先处理这些交货事务处理,然后更改此属性。 解决方式:检查以下几个表是是否存在记录,如果存在请完成相关事务后, 再失效物料。 select*frommtl_onhand_quantities_detailwhereinventory_item_id=188......
  • @Async失效的大部分场景
    @Async注解在Spring中用于实现方法的异步执行,但有时可能会因为以下原因失效:非Spring管理的bean:异步方法所在的类必须是Spring容器管理的Bean(例如,通过@Component、@Service、@Repository或@Controller注解)。缺失EnableAsync配置:应用程序需要包含@EnableAsync注解......