Vue 全局事件总线

安装全局事件总线

在main.js中写入如下代码
beforeCreate () {
    Vue.prototype.$bus = this //安装全局事件总线
  }

触发事件

<template>
  <div class="school">
    <h4>大学名称是:{{ schoolName }}</h4><el-button @click="sendSchoolName(schoolName)">发送</el-button>
  </div>
</template>

<script>
export default {
  name: 'School',
  data () {
    return {
      schoolName: 'XXX大学'
    }
  },
  methods: {
    sendSchoolName (val) {
      this.$bus.$emit('getSchoolName', val) //触发事件
    }
  }
}
</script>

接收事件

<template>
  <div class="student">
    <h4>我的名字是{{ name }},我今年{{ age }}岁<span v-if="schoolName">我是{{ schoolName}}的学生</span> </h4>
  </div>
</template>

<script>
export default {
  name: 'Student',
  data () {
    return {
      name: 'Tom',
      age: 18,
      schoolName: ''
    }
  },
  mounted () {
    this.getSchoolName()
  },
  methods: {
    getSchoolName () {
     // 接收事件
      this.$bus.$on('getSchoolName', (data) => { 
        this.schoolName = data
      })
    }
  },
  beforeDestroy () {
    this.$bus.$off('getSchoolName')
  }
}
</script>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容