Vue全局事件任意组件间通信

简介: Vue全局事件任意组件间通信

1. $on ,和 $off$emit 这三个方法在Vue原型对象上,所以,我们的全局事件总线就要放在Vue的原型对象(vue.prototype)上,以确保每个组件都能访问得到。

代码

第一步:挂载 main.js

//引入Vue
import Vue from 'vue'
//引入App
import App from './App.vue'
 
//关闭Vue的生产提示
Vue.config.productionTip = false
 
 
//创建vm
new Vue({
  el:'#app',
  render: h => h(App),
  // beforeCreate中模板未解析,且this是vm
  beforeCreate(){
    Vue.prototype.$bus = this //安装全局事件总线
  }
})

第二步:A 组件发送事件和值

<template>
  <div>
    <h2>姓名:{{name}}</h2>
    <h2>年龄:{{age}}</h2>
    <button @click="sendName">传递数据</button>
  </div>
</template>
 
<script>
    export default {
        name:'TestA',
        data(){
          return{
            name:'张三',
            age:18
          }
        },
        methods:{
          // 触发事件,事件名不能重复
          sendName(){
            this.$bus.$emit('methodFun', this.name);
          }
        },
    }
</script>
 
<style scoped>
 
</style>

第三步:B组件接收A组件的事件和值

<template>
  <div>
    <h2>籍贯:{{native}}</h2>
    <h2>住址:{{adress}}</h2>
  </div>
</template>
 
<script>
    export default {
        name:'TestB',
        data(){
          return{
            native:'河北',
            adress:'河北邯郸',
          }
        },
        mounted(){
          // 绑定事件
          this.$bus.$on('methodFun', (data)=>{
            console.log('数据', data);
          })
        },
        // 销毁对应自定义事件 在得到数据之后,解绑事件,提高性能
        beforeDestroy(){
          this.$bus.$off('methodFun')
        }
    }
</script>
 
<style scoped>
 
</style>

结语:全局事件总线就完成了    

相关文章
|
5天前
|
JavaScript
【vue】如何跳转路由到指定页面位置
【vue】如何跳转路由到指定页面位置
8 0
|
5天前
|
JSON JavaScript 前端开发
【vue】假数据的选择和使用
【vue】假数据的选择和使用
11 1
|
5天前
|
JavaScript 前端开发 安全
【vue】如何修改iview组件的样式(element同)
【vue】如何修改iview组件的样式(element同)
12 1
|
5天前
|
JavaScript 前端开发
【vue】iview如何把input输入框和点击输入框之后的边框去掉
【vue】iview如何把input输入框和点击输入框之后的边框去掉
12 0
|
5天前
|
JavaScript UED
【vue】iview组件 DatePicker 日期选择器如何显示默认当前日期
【vue】iview组件 DatePicker 日期选择器如何显示默认当前日期
10 1
|
1天前
|
资源调度 JavaScript 前端开发
【vue】vue中的路由vue-router,vue-cli脚手架详细使用教程
【vue】vue中的路由vue-router,vue-cli脚手架详细使用教程
|
1天前
|
JavaScript 前端开发
vue组件化开发流程梳理,拿来即用
vue组件化开发流程梳理,拿来即用
|
1天前
|
JavaScript 前端开发 IDE
|
1天前
|
JavaScript Go
Vue路由跳转及路由传参
Vue路由跳转及路由传参
|
2天前
|
JavaScript 前端开发 BI
采用前后端分离Vue,Ant-Design技术开发的(手麻系统成品源码)适用于三甲医院
开发环境 技术架构:前后端分离 开发语言:C#.net6.0 开发工具:vs2022,vscode 前端框架:Vue,Ant-Design 后端框架:百小僧开源框架 数 据 库:sqlserver2019
采用前后端分离Vue,Ant-Design技术开发的(手麻系统成品源码)适用于三甲医院