Vue文档中的事件总线函数使用方法
在Vue开发中,我们经常需要在不同组件之间传递数据或者调用方法。而事件总线则提供了一种简单、灵活的方式来实现组件之间的通信。
事件总线是Vue实例的一部分,它允许组件之间相互通信。简单来说,事件总线就是一个Vue实例,可以用于组件间的通信。也就是说,我们可以通过事件总线来实现组件之间的信息传递和方法调用。
用法:
使用事件总线的第一步是在Vue实例中实例化它。我们可以在main.js文件中实例化一个事件总线,并将它挂载在Vue原型上。
import Vue from 'vue' Vue.prototype.$bus = new Vue()
上述代码中,我们通过 Vue.prototype.
的方式在Vue实例上添加了一个 $bus
对象,并将它赋值为一个新的Vue实例。这样我们就可以通过 $bus
对象来进行组件之间的通信了。
使用事件总线进行事件的发布和订阅
接下来我们就可以使用 $bus
对象来进行事件的发布和订阅了。我们可以在需要订阅事件的组件中使用 $bus.$on()
方法来订阅事件,当事件被触发时,就会执行回调函数。
例如,在组件A中订阅了一个名字为 foo
的事件:
this.$bus.$on('foo', (msg) => { console.log(msg) })
在组件B中触发了同名的 foo
事件:
this.$bus.$emit('foo', 'this is message from component B')
这样就会在组件A的控制台中输出 this is message from component B
。
使用事件总线进行方法的调用
除了可以进行事件的发布和订阅外,我们还可以使用 $bus.$emit()
方法来进行方法的调用。这种方法调用方式也被称为函数调用。
在组件A中定义一个 handleClick()
方法:
methods: { handleClick(msg) { console.log(msg) } }
在组件B中使用 $bus.$emit()
方法调用组件A中的 handleClick()
方法:
this.$bus.$emit('handleClick', 'this is a test message')
这样就会在组件A的控制台中输出 this is a test message
。
总结:
通过使用事件总线,我们可以方便地在Vue组件之间进行事件的发布和订阅,以及方法的调用。事件总线在Vue开发中具有广泛的应用场景,并且可以帮助我们更好地组织和管理组件之间的通信。