当前位置: 首页 > article >正文

前端基础之全局事件总线

用于实现任意组件中的通信,我们可以将数据放入到Vue原型中,这样就能实现vc与vm都能访问该数据

我们需要一个能使用去使用$on或是$emit这里方法的东西,vc与vm都能调用这个方法,

但是vm与vm最终在创建时都需要去寻找Vue的原型对象,所以说我们可以直接把Vue的原型对象当作是这个中间人bus

在beforeCreate中我们就能去申明这个中间人

将Student.vue中的信息发送给School.vue中

在main.js中

import Vue from 'vue'

import App from './App.vue'

Vue.config.productionTip=false

new Vue({

    el:'#app',

    render:h=>h(App),

    beforeCreate(){

        Vue.prototype.$bus=this //安装全局事件总线

    }

})

在Student.vue中

<template>

  <div class="demo">

    <h2  >学生姓名:{{name}}</h2>

    <h2>学生性别:{{sex}}</h2>

    <button @click="sendStudentName">把学生名给School组件</button>

  </div>

</template>

<script>

export default {

    name:'Student',

    data(){

        return{

          name:'李四',

         sex:""

        }

    },

    methods:{

      sendStudentName(){

        this.$bus.$emit('hello',this.name)

      }

    }

}

</script>

<style scoped>

.demo{

  background-color: orange;

}

</style>

在School.vue中

<template>

  <div class="demo">

    <h2 >学校名称:{{name }}</h2>

    <h2>学校地址:{{addr}}</h2>

  </div>

</template>

<script>

export default {

    name:'School',

    data(){

        return{

          name:'尚硅谷atguigu',

          addr:'北京'

        }

    },

    mounted(){

      this.$bus.$on('hello',(data)=>{

        console.log('我是School组件,我收到了数据',data)

      })

    },

    beforeDestroy(){

      this.$bus.$off()

    }

}

</script>

<style scoped>

.demo{

  background: skyblue;

}

</style>

我们就实现了发送端使用$emit定义一个自定义方法,然后给School.vue使用$on来进行接收


http://www.kler.cn/a/573928.html

相关文章:

  • vue表单已经赋值了,但是还是返回async-validator “xxx is required“提示,弹出验证红字而且不能输入
  • supervisord管理Gunicorn进程,使用Nginx作为反向代理运行flask web项目
  • 代理与 hosts 文件冲突问题解决方案
  • uniapp封装路由管理(兼容Vue2和Vue3)
  • 批量对 Word 优化与压缩,减少 Word 文件大小
  • 通信小贾的西天取经之路:从茫然小白到工业互联网售前
  • Java基础知识大全(含答案,面试基础)
  • FX-结构体
  • FusionInsight MRS云原生数据湖
  • 江科大51单片机笔记【8】LED点阵屏显示图形及动画(下)
  • Hive-优化(参数优化篇)
  • 扩散语言模型:从图像生成到文本创造的范式跃迁
  • 随手记录第十六话 -- Go 语言入门:基础知识与常用框架
  • 计算机网络开发(2)TCP\UDP区别、TCP通信框架、服务端客户端通信实例
  • 每天一个Flutter开发小项目 (13) : 本地数据随心存取 - 构建SQLite ToDo 应用,掌握Flutter本地数据库操作
  • 算法·搜索
  • 《张一鸣,创业心路与算法思维》
  • 汽车AI识别及处理解决方案,引领未来驾驶新风尚
  • MybatisPlus从入门到精通
  • Linux基础 IO 和文件