Vue消息发布与订阅

在Vue的原型上定义一个变量bus,在所有的组件里都可以这个变量,使用this.bus.$emit()发布消息,this.bus.$on订阅消息

<!--  在Vue的原型上定义一个变量bus,所有Vue的实例或组件都将共享这个bus,可以用bus来发布消息或订阅消息  -->
    Vue.prototype.bus = new Vue();
    new Vue({
        el: '#root',
        mounted(){
            // 在所有的组件上都可以订阅这条消息
            // 参数1发布者的名称,参数3接收的值
            this.bus.$on('chen',(msg)=>{
                console.log(msg)
            })
        },
        components: {
            com:{
                template: "<button @click='sub'>子组件</button>",
                methods: {
                    // 在发布者定义发布者
                    sub(){
                        // 参数1发布者名称,参数2传递的值
                        this.bus.$emit('chen',"这是子组件传给去的值")
                    }
                }
            },
            com1:{
                template: "<div>子组件2</div>",
                mounted(){
                    // 在子组件里同样可以订阅
                    this.bus.$on('chen',(msg)=>{
                        console.log(msg)
                    })
                },
            },
        }
    })

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Vue.js特性:渐进式技术栈 轻量级的框架 双向数据绑定 指令 插件化 Vue实例书写模板: 访问Vue实例的属...
    猫晓封浪阅读 5,193评论 0 0
  • 前言 组件是 vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引...
    用技术改变世界阅读 6,523评论 1 3
  • Vue.js 基础 一套用于构建用户界面的渐进式框架, 核心库只关注视图层,易于上手,便于与第三方库或现有项目整合...
    前端小咖阅读 6,723评论 1 33
  • 响应式布局的理解 响应式开发目的是一套代码可以在多种终端运行,适应不同屏幕的大小,其原理是运用媒体查询,在不同屏幕...
    懒猫_6500阅读 4,172评论 0 0
  • 晚上爸爸发来微信,很开心地说家里的新房子外墙的瓷砖已经都贴完了,很漂亮,改天拍一张发给我,我笑着说好啊好啊。 爸爸...
    二肆阅读 1,865评论 0 3