Vue中全局事件总线的配置和原理

news2024/11/25 3:36:27

实现任意组件之间的通信

  • 任意组件通信的原理:

  • 1、实现任意组件之间的通信,需要一个傀儡。这个傀儡既能被vm访问到,也能被VueComponent访问。

    2、VueComponent.prototype.proto === Vue.prototype为图上1.0黄色的线路。是Vue让组件实例对象VueComponent可以访问到Vue原型上的属性、方法($mount......)

    3、傀儡位置放在Vue的原型对象上,一个个VueComponent可以通过黄线访问到Vue的原型对象。下列代码非标准写法

  • //整段代码为main.js
    import Vue from 'vue'
    import App from './App'
    ​
    //下面代码为非标准写法
    const Demo = Vue.extend({})//创建VueComponent
    const d = new Demo()//VueComponent的实例对象可以new出来。
    Vue.prototype.x = d//Vue.prototype.x的意思是在Vue的原型对象上放置傀儡x。d是VueComponent可以访问$mount,$watch等方法或属性
    ​
    ​
    //下面代码为标准写法
    //因为VueComponent可以访问Vue的原型对象上。标准写法可以用vm不用vc,只要调整代码执行顺序上符合Vue的底层运行即可
    //new Vue({})为创建vm
    new Vue({
      el: '#app',
      router,
      components: { App },
      template: '<App/>',
      //  beforeCreate的作用是在vm未访问data中的数据或方法时将傀儡放置
      beforeCreate(){
      //  傀儡的名字改成$bus,bus为总线的意思。$是迎合Vue的设置给程序员用,this指的创建的vm
        Vue.prototype.$bus = this
      }
    })
     
  • 图1.0中箭头的意思是:逐层访问。例如VueComponent->VueComponent的原型对象->Vue的原型对象。VC在VC原型对象找不到的方法或属性,可以在Vue的原型对象中查找

  • Student组件

  • Student组件向傀儡发送信息,等待其他组件事件的触发和返回的数据。

  • <template>
      <div class="blue">
        <h2>学生的名字:{{ name }}</h2>
        <h2>学生的名字:{{ address }}</h2>
      </div>
    </template>
    ​
    <script>
    export default {
        name:'Student',
        data(){
            return {
                name:'boy',
                address:'老地方'
            }
        },
        //非标准写法
        mounted() {
            console.log('Student', this);//this为VueComponent
            //下面实现兄弟组件的通信,this.x也是VueComponent,main.js配置过
            this.x.$on('hello',(data)=>{
                console.log('我是Student组件,我接收了数据data',data);
            })
        },
       //标准写法和上面一样的代码。把x改成$bus即可 
       //由于傀儡是写在源码上的, 当删除某个组件。该组件绑定在傀儡的事件还保留。故用beforeDestroy将其解绑
        beforeDestroy() {
            this.$bus.$off('hello')
            //注意:this.$bus.$off()括号内什么都不填则将傀儡都删了,其他组件绑定到傀儡的事件也不好用了
        }
    }
    </script>
    <style scoped>
        .blue{
            background-color: blue;
            padding: 5px;
        }
    </style>
    ​
  • School组件

  • School组件触发事件向Student组件发送666

  • <template>
      <div class="school">
       <h2>学校的名字:{{ name  }}</h2>
       <button @click="sendSchoolName">测试sendSchoolName方法</button>
      </div>
    </template>
    ​
    <script>
    export default {
        data(){
            return {
             name: '小猴子的玩具商'
            }
        },
        //非标准写法
        methods:{
          sendSchoolName(){
            //找到this.x触发Student组件的hello事件,并传数据给Student组件
            this.x.$emit('hello',666)
          }
        },
       //标准写法和上面一样的代码,把x改成$bus即可 
    }
    </script>
    <style scoped>
      .school {
        background-color: pink;
        padding: 5px;
        margin-top: 30px;
      }
    </style>>
     

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

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

相关文章

SSM学生成绩信息管理系统----计算机毕业设计

项目介绍 本项目分为管理员、教师、学生三种角色&#xff0c; 管理员角色包含以下功能&#xff1a; 公告管理,写公告,学生增删改查,教师增删改查,查看成绩报表,管理员首页,课程表增删改查等功能。 教师角色包含以下功能&#xff1a; 修改密码,按照条件查询,查看学生信息,管理…

【k8s】deamonset文件和说明

目录 deamonset的相关命令 deamonset的定义 deamonset的使用场景 deamonset的例子 deamonset字段说明 serviceAccountName DaemonSet的结构及其各个部分的作用 deamonset的相关命令 #查看<name-space>空间内有哪些deamonset kubectl get DaemonSet -n <na…

关于Python里xlwings库对Excel表格的操作(二十七)

这篇小笔记主要记录如何【如何使用xlwings库的“Charts类” 在一个工作表中创建多个图表】。前面的小笔记已整理成目录&#xff0c;可点链接去目录寻找所需更方便。 【目录部分内容如下】【点击此处可进入目录】 &#xff08;1&#xff09;如何安装导入xlwings库&#xff1b; &…

分布式定时任务Xxl_Job详细使用手册

看了很多网上的版本&#xff0c;思路描述的都不是很清晰&#xff0c;都只是几步操作就完成了&#xff0c;看效果&#xff0c;导致容易走入弯路&#xff08;不排除是自己理解能力把&#xff09;&#xff0c;最开始以为是把admin模块集成到项目&#xff0c;后来测试了会&#xff…

ubuntu terminator 非常好用的护眼配置

安装 sudo apt install terminator 配置文件&#xff1a;sudo gedit ~/.config/terminator/config &#xff08;如果没有就创建&#xff09; 配置如下&#xff1a; [global_config] handle_size -3 title_transmit_fg_color "#000000" title_trans…

YOLOv8训练损失、mAP画图功能 | 支持多结果对比,多结果绘在一个图片(科研必备)

一、本文介绍 本文给大家带来的是YOLOv8系列的绘图功能&#xff0c;我将向大家介绍YOLO系列的绘图功能。我们在进行实验时&#xff0c;经常需要比较多个结果&#xff0c;针对这一问题&#xff0c;我写了点代码来解决这个问题&#xff0c;它可以根据训练结果绘制损失(loss)和mA…

稳部落 – 新浪微博备份导出工具

稳部落 稳部落是新浪微博备份导出工具&#xff0c;可以帮助用户非常方便的导出备份新浪微博的数据&#xff0c;让我们可以永久保存这些微博数据。它支持新浪微博、微博私信、微博评论的导出&#xff0c;并可以备份包含图片、视频的完整微博内容。用户只需登录微博账号&#xf…

浅学一下哈

1.新建用户test不建家目录不允许登录&#xff0c;uid为10086_____________________ useradd -u 10086 -M -s /sbin/nologin 2.将 /opt 文件夹中所有文件的属主&#xff0c;属组改成&#xff0c;test_______________________ chown -R test.test /opt chown -R …

小红书、抖音、视频号下载工具:随心管理个人作品集 | 开源日报 No.134

karanpratapsingh/system-design Stars: 20.6k License: NOASSERTION 这个项目是关于系统设计的。它提供了有关系统设计的课程内容&#xff0c;包括 IP、OSI 模型、TCP 和 UDP 等主题。该项目的核心优势和特点如下&#xff1a; 提供全面而高效的系统架构定义。从基础设施到数…

【XR806开发板试用】FreeRTOS创建任务测试

这篇来学习下&#xff0c;XR806开发板在FreeRTOS系统下创建两个任务测试&#xff0c;由于没有找到学习的文档&#xff0c;试着参考例程来测试。 一、复制工程 上篇测试了hello_demo的测试例程&#xff0c;直接复制这个工程文件&#xff0c;在此基础上修改 rootubuntu:/home/…

C语言实验6:文件

目录 一、实验要求 二、实验原理 1. 文件的基本概念 2. 文件指针 3. 文件的打开与关闭 3.1 fopen 3.2 fclose 4. 文件的读写操作 4.1 fread 4.2 fwrite 5. 文件的定位 三、实验内容 3.1 文件复制 代码 截图 分析 3.2 单词统计 代码 截图 分析 一、实验要求…

流量预测_MLP模型_keras

目录 0、我在干什么&#xff1f;1、import libararies2、加载数据load data3、独家观察数据函数 :heartbeat:4、数据预处理pre-processing&#xff08;1&#xff09;将时间戳转换为一个日期时间索引&#xff08;2&#xff09;填充所有缺失的值&#xff08;3&#xff09;将时间序…

GPT如何完成技术路线图?

GPT如何完成技术路线图&#xff1f; 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析&#xff0c;AI画图&#xff0c;图像识别&#xff0c;文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型Claude2二定制自己的GPTs 1.自定义GPTs使用…

POC-700系列 支持多功能扩展的强固型无风扇嵌入式计算平台

POC-700系列是一款拥有小巧紧凑尺寸的无风扇嵌入式计算平台&#xff0c;搭载了英特尔 Alder Lake i3-N305或凌动 x7425E处理器&#xff0c;提供高达32个执行单元(EU) UHD图形功能&#xff0c;8核8线程&#xff0c;而其功耗非常低&#xff0c;仅为12W。POC-700系列可支持英特尔 …

2 - 表结构 | MySQL键值

表结构 | MySQL键值 表管理1. 库的操作2. 表的操作表的创建与删除表的修改复制表 3. 管理表记录 数据类型数值类型字符类型&#xff08;汉字或者英文字母&#xff09;日期时间类型 表头存储与日期时间格式的数据枚举类型 数据批量处理 表管理 客户端把数据存储到数据库服务器上…

Java项目:104SpringBoot就业管理系统

博主主页&#xff1a;Java旅途 简介&#xff1a;分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 就业管理系统基于SpringBootMybatis开发&#xff0c;系统分为两种角色&#xff0c;分别是管理员和普通用户。 管理员功能如下&#xff1a; 就业信息管理…

一、医学影像云平台(AI赋能基层的最佳实践)

医学影像云平台&#xff0c;是一个目前影像业务中&#xff0c;各省市级领导比较重视的业务板块。因为&#xff0c;影像平台不但可以直接给原来没有PACS系统的1,2级医院提供PACS服务&#xff0c;还可以提供院间之间的业务&#xff0c;例如发送远程诊断&#xff0c;远程会诊业务&…

银行业绩数据监控大屏:驾驭金融海洋的航标

在金融领域&#xff0c;数据就是生命线。如何有效地监控和管理这些数据&#xff0c;确保银行业绩的稳健发展&#xff0c;已成为银行业内亟待解决的问题。而银行业绩数据监控大屏&#xff0c;正是解决这一问题的有力工具。 一、实时监控&#xff0c;把握业绩动态 银行业绩数据监…

前端八股文(CSS篇)二

目录 1.css中可继承与不可继承属性有哪些 2.link和import的区别 3.transition和animation的区别 4.margin和padding的使用场景 5.&#xff1a;&#xff1a;before和&#xff1a;after的双冒号和单冒号有什么区别&#xff1f; 6.display:inline-block什么时候会显示间隙 7…

2024年【建筑焊工(建筑特殊工种)】考试试卷及建筑焊工(建筑特殊工种)考试总结

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 建筑焊工(建筑特殊工种)考试试卷根据新建筑焊工(建筑特殊工种)考试大纲要求&#xff0c;安全生产模拟考试一点通将建筑焊工(建筑特殊工种)模拟考试试题进行汇编&#xff0c;组成一套建筑焊工(建筑特殊工种)全真模拟考…