1-5 vue组件-非父子组件通信

2018-08-28  本文已影响0人  绣依锐

通过单独的事件中心管理组件间的通信
将在各处使用该事件中心,组件通过它来通信

1、先设置Bus

var eventHub = new Vue()

然后在组件中,可以使用 emit,on, $off 分别来分发、监听、取消监听事件

2、发送事件的组件

Vue.component('component-a',{
    template:'<div>组件A:<button @click="sendDataFromA">向组件B发送组件A的数据</button></div>',
    data() { return { data1:'组件A的数据' } },
     methods: {
        sendDataFromA() {
            eventHub.$emit('sendDataFromA',this.data1)
        }
     }
})

3、组件内监听事件

Vue.component(' component-b',{
    template:'<div>组件B:<p>从组件A接收的字符串参数 {{msg}}</p></div>',    
    data(){
        return {msg:'默认值'}
    },
    mounted() {
        var self = this
        eventHub.$on('sendDataFromA',function(data){ self.msg = data })
    }
})
上一篇 下一篇

猜你喜欢

热点阅读