美文网首页
vue-事件总线

vue-事件总线

作者: tutututudou | 来源:发表于2022-07-04 00:12 被阅读0次

VueComponent.prototype.proto === Vue.prototype

  • 利用这个关系

main.js

Vue.prototype.xxx=7

子组件可以访问到xxx这个属性

test.vue

console.log('----',this.xxx)
// 结果是可以访问到Vue里面的原型对象的属性xxx,为7

main.js

 console.log('--main--',Vue.prototype.xxx = {x:111})

向Vue.prototype里添加一个xxx属性,这个属性指向一个对象

app.vue

 console.log('--app--',this.xxx.c=6)
console.log(this.xxx.god)

app.vue是test.vue的父组件,向app.vue添加一个c属性,可以查看到test.vue向Vue.prototype添加的属性

test.vue

console.log('--test--',this.xxx.c)
this.xxx.god='god'
//6

test.vue可以访问到app.vue的c属性,因为他们都是向Vue.prototype.xxx添加属性,所有子组件都可以访问到Vue.prototype里面的配置

父子组件可以查看到对方的属性

student.vue

console.log('--shool--',this.xxx.god)

子组件相互可以查看到对方的属性

那么我们就可以利用这个Vue.prototype让组件之间相互通信

为了迎合vue,我们将xxx属性命名为$bus

Vue.prototype.$bus

但是,每次我们都向Vue.prototype添加属性或方法后,我们才能使用,这样造成存在一堆的属性方法
现在我们不向Vue.prototype添加属性或方法后,而是把属性或方法放在组件本身,但却通过另外的组件调用它

一个组件调用另外的组件函数可以用$emit
test.vu调用student.vue的函数shoolTest

this.$bus.$emit('shoolTest')

student.vue接收别的数组的调用

this.$bus.$on('shoolTest',()=>{
       console.log('--shoolTest--')
    })

他们调用的时候可以加参数,

this.$bus.$emit('shoolTest','wwww')

接形参

this.$bus.$on('shoolTest',(data)=>{
       console.log('--shoolTest--',data)
    })

要想让组件的this.bus属性中包含on、$emit等方法,就要在全局里面部署
main.js

 beforeCreate(){
    Vue.prototype.$bus = this
  }

在beforeCreate钩子添加是确保数据和事件没有开始之前就存在这个bus属性,这render渲染完模板就可以直接在组件中使用on、$emit等方法
this指的是vue这个实例对象

相关文章

  • vue-事件总线

    VueComponent.prototype.proto === Vue.prototype 利用这个关系 mai...

  • RxJava实现事件总线(RxBus)学习笔记

    目录事件总线的介绍利用RxJava实现事件总线(Rxbus)Rxbus的使用 事件总线的介绍 1. 什么是事件总线...

  • 事件总线知多少(1)

    源码路径:Github-EventBus事件总线知多少(1)事件总线知多少(2) 1. 引言 事件总线这个概念对你...

  • 事件总线知多少(2)

    源码路径:Github-EventBus事件总线知多少(1)事件总线知多少(2) 1.引言 之前的一篇文章事件总线...

  • vue-事件

    title: vue-事件处理date: 2017-03-23 vue 事件 本文介绍vue组件的事件处理,并通过...

  • 使用JavaScript手写一个事件总线功能

    事件总线 事件总线主要是实现一些任意的或非父子关系的组件之间的数据通信 实现一个事件总线功能需要: 事件派发 $...

  • 走马观花 - EventBus

    EventBus是Android的中央发布/订阅事件系统。 事件被post到总线,总线将事件传递给具有事件类型的匹...

  • [大白装逼]YEventBus事件总线的实现

    Y事件总线:基于java的Observe和Observable实现的事件总线github地址:https://gi...

  • 事件总线

    Android应用开发中,经常会涉及Activity,Fragment,Service等不同组件或者模块之间的消息...

  • 事件总线

    EventBus 3.0进阶:源码及其设计模式 完全解析 EvenBus3.0用法介绍 Eventbus Squa...

网友评论

      本文标题:vue-事件总线

      本文链接:https://www.haomeiwen.com/subject/xqqnrrtx.html