只需三个步骤:
1.创建一个公共的js文件(如vueEvent.js),引入并实例化Vue,然后暴露这个实例。
//创建vueEvent.js
import Vue from 'vue'
var vueEvent = new Vue();
export default vueEvent
并在参与传值和接收值的组件中,引入vueEvent
2.在传值的组件中,通过vueEvent.$emit('名称','数据')进行广播
<template>
<div id="home">
<h1>我是Home组件</h1>
<button @click="emitNews()">给NEWS组件广播数据</button>
</div>
</template>
<script>
import vueEvent from '../model/vueEvent.js';
export default{
data(){
return {
msg: '我是要传给News组件的值'
}
},
methods:{
emitNews(){
//广播数据
vueEvent.$emit('to-news', this.msg);
}
}
}
</script>
3.在接收值的组件中,通过vueEvent.$on('名称',function ( ){ })接收广播的数据
<template>
<div id="news">
<h3>我是News组件</h3>
</div>
</template>
<script>
import vueEvent from '../model/vueEvent.js';
export default{
data(){
return {
msg: '',
}
},
mounted(){
//接收数据
vueEvent.$on('to-news', function(data){
console.log(data);
})
}
}
</script>
最后News组件成功打印出Home组件中的msg: