首页 > 其他分享 >递归组件实现子向父传值

递归组件实现子向父传值

时间:2024-03-18 09:01:19浏览次数:23  
标签:子向 name 递归 eventList 菜单 Bus 组件 父传值 data

业务逻辑:通过自己调用自己的方式生成树,再点击子菜单时,需要将点击子菜单的菜单名传值给父组件(使用总线 bus)

 新建bus.js文件

import { ref } from 'vue'

class Bus {
  constructor() {
    // 收集订阅信息,调度中心
    this.eventList = {}, // 事件列表,这项是必须的
    // 下面的都是自定义值
    this.msg = ref('这是一条总线的信息')
  }

  // 订阅
  $on(name, fn) {
    this.eventList[name] = this.eventList[name] || []
    this.eventList[name].push(fn)
  }

  // 发布
  $emit(name, data) {
    if (this.eventList[name]) {
      this.eventList[name].forEach((fn) => {
        fn(data)
      });
    }
  }

  // 取消订阅
  $off(name) {
      if (this.eventList[name]) {
      delete this.eventList[name]
    }
  }
}

export default new Bus()

 父组件引入

<script>
// import roomMenuData from "@/data/RoomMenuData"; //左侧菜单数据
import leftMenu from "@/components/leftMenu.vue"; //引用递归菜单组件
var roomMenuDataL; //后台获取教室数据
var message = "";
import Bus from "@/mytools/Bus";
// 监听菜单点击返回值(//左侧菜单点击事件)
Bus.$on("changeMsg", (data) => {
  message= data;
  console.error(data);
  console.error("菜单数据");
});
</script>

子组件

<template>
  <div>
    子组件:
    <button @click="handleBusEmit">触发Bus.$emit</button>
    <button @click="changeBusMsg">修改总线里的 msg</button>
  </div>
</template>

<script setup>
import Bus from '../Bus.js'

function handleBusEmit() {
  Bus.$emit('changeMsg', '雷猴啊')
}

function changeBusMsg() {
  // console.log(Bus.msg)
  Bus.msg.value = '在子组件里修改了总线的值'
}
</script>

 

标签:子向,name,递归,eventList,菜单,Bus,组件,父传值,data
From: https://www.cnblogs.com/ZhuMeng-Chao/p/18079584

相关文章

  • 一.函数的递归
    简单而通俗易懂的说,函数的递归就是:函数自己调用自己。就是把大事化小事,递的意思就是推进的意思。归就是回归的意思。递归的限制:两个条件:1.递归存在限制条件,当满⾜这个限制条件的时候,递归便不再继续。                        ......
  • 递归示例-展开编号(Excel函数集团)
    展开编号=DROP(fx(COUNTA(B:B)-1),1)fx=LAMBDA(x,IF(x>0,VSTACK(fx(x-1),SEQUENCE(INDEX(Sheet4!$B:$B,x+1),,INDEX(Sheet4!$C:$C,x+1)))))使用Lambda定义x当x小于等0时,返回False,以此作为开关;当x为1时,返回False连接SEQUENCE(INDEX(Sheet4!$B:$B,2),,INDEX(Sheet4!$C:......
  • 数据结构笔记(十四)二叉树的遍历(递归)
    四种访问方式:前序遍历,中序遍历,后序遍历,层序遍历这篇文章主要为前序,中序,后序遍历的递归形式,递归形式较为简单,后面更新遍历的循环形式较为复杂,建议使用递归形式#include<stdio.h>#include<stdlib.h>typedefcharE;typedefstructTreeNode*Node;structTreeNod......
  • java 高效递归查询树 find_in_set 处理递归树
    建表语句DROPTABLEIFEXISTS`sys_dept`;CREATETABLE`sys_dept`(`id`bigint(20)NOTNULLAUTO_INCREMENTCOMMENT'部门id',`parent_id`bigint(20)DEFAULT'0'COMMENT'父部门id',`ancestors`varchar(256)DEFAULT''......
  • 算法中递归的执行过程
    原文链接:https://blog.csdn.net/weixin_38754799/article/details/120681819我们来看一下函数sum(n=5)的递归执行过程,如下: 计算sum(5)时,先sum(5)入栈,然后原问题sum(5)拆分为子问题sum(4),再入栈,直到终止条件sum(n=1)=1,就开始出栈。sum(1)出栈后,sum(2)开始出栈,接着sum(3)。最后呢,sum(1)就是后进......
  • 汉诺塔的图解递归算法
    原文链接:https://www.cnblogs.com/dmego/p/5965835.html如下图所示,从左到右有A、B、C三根柱子,其中A柱子上面有从小叠到大的n个圆盘,现要求将A柱子上的圆盘移到C柱子上去,期间只有一个原则:一次只能移到一个盘子且大盘子不能在小盘子上面,求移动的步骤和移动的次数 解:(1)n==1  ......
  • 探索 MySQL 递归查询,优雅的给树结构分页!
    一、概述递归查询是一种在数据库中处理具有层级结构数据的技术。它通过在查询语句中嵌套引用自身,以实现对嵌套数据的查询。递归查询在处理树状结构、父子关系或层级关系的数据时非常有用。在MySQL中,递归查询可以使用WITHRECURSIVE语句来实现。该语句允许我们定义一个递归查......
  • [计算理论] 1. 图灵机、递归函数与丘奇-图灵论题 Turing Machine, Recursive Function
    图灵机在研究一种自动机时,我们有两种视角语法学(Syntax),描述一个自动机是什么,如分析自动机的组成、结构。语义学(Semantics),描述一个自动机做什么,如分析自动机的语言。换句话说,前者是自动机的视角,后者是形式语言的视角。图灵机的语法图灵机的原始描述如下:一台含......
  • 关于Sql server数据类型HierarchyID 数据类型用法和递归显示完整路径
    SQLServer2008版本之后的新类型HierarchyID不知道大家有没有了解,该类型作为取代id,parentid的一种解决方案,让人非常惊喜。官方给的案例浅显易懂,但是没有实现我想要的基本功能,树形结构中完整名称路径的展示。本文末尾是一个完整路径的样例,需要更多基本操作可以参考文末微软链......
  • MYSQL: 表表达式(CTE)实现递归实例
    环境:MYSQL8.0 + windows10 1、在TEST数据库中创建 表CTE_TEST.CREATETABLE`test`.`cte_test`(test_idINT,test_nameVARCHAR(50),parent_test_idINT,created_byINT,creation_dateTIMESTAMP);例子数据:INSERTINTO`test`.`cte_test`(test_i......