枫云教育
您的当前位置:首页在vue中使用eventBus如何实现同级组件的通讯

在vue中使用eventBus如何实现同级组件的通讯

来源:枫云教育
 这篇文章主要介绍了vue 使用eventBus实现同级组件的通讯,需要的朋友可以参考下

新创建一个vue实例用于调度事件的绑定和发送

可以做到同级组件相互通讯,传递参数,点击第一个组件会修改第二个组件的label值,点击第二个组件会修改第二个组件的label值

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <script src="vue.js"></script>
</head>
<body>
<p id="app">
 <one></one>
 <two></two>
</p>
</body>
<script>
 // 使用一个vue实例 作为事件的载体,用于绑定事件和处理发送事件,作为调度中心
 let eventBus = new Vue()
 let one = {
 template: '<p>{{val}} <button @click="click">click</button></p>',
 data() {
 return {
 val: 0
 }
 },
 created() {
 //为one绑定事件,如果two_click事件发生了,则执行回调函数
 eventBus.$on('two_click',
 (val) => {
 // 这个this 指的是one的vue实例
 this.val = val
 }
 )
 },
 methods: {
 click() {
 // 如果one被点击了,则发送一个one_click的事件,并传递一个参数
 eventBus.$emit('one_click', 11)
 }
 }
 }
 let two = {
 template: '<p>{{val}} <button @click="click">click</button></p>',
 data() {
 return {
 val: 0
 }
 },
 created() {
 eventBus.$on('one_click',
 (val) => {
 this.val = val
 })
 },
 methods: {
 click() {
 eventBus.$emit('two_click', 22)
 }
 }
 }
 new Vue({
 el: '#app',
 components: {
 one,
 two
 }
 })
</script>
</html>

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

React组件项目(详细教程)

有关Vue组件开发技巧(详细教程)

通过代码示例,详解解读javascript模块加载器

显示全文