15、Vue 兄子组件之间的广播通信

image.png

步骤:
1、创建一个新的js文件。
2、引入一个空的VUE实例(新的js文件中)。
import Vue from 'vue'//引入vue实例
3、实例化引入的空实例(新的js文件中)。
let VueEvent=new Vue();
4、将VueEvent暴露出去(新的js文件中)。
export default VueEvent;


image.png

5、再发送端和接收端均引入之前实例化的空Vue实例。


image.png

6、痛快地发送与接收:


image.png

代码:

App.vue:


<template>
<div id="app">
<v-home></v-home>






<v-news></v-news>
<router-view/>
</div>
</template>

<script>
import Home from './components/Home.vue';
import News from './components/News.vue';
export default {
name: 'App',
data (){
return{
msg:'你好!',
}
},
methods:{

},
components:{
  'v-home':Home,
  'v-news':News,
}

}
</script>

<style>

app {

font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
color: #2c3e50;
margin-top: 60px;
}
</style>

VueEvent.js:
import Vue from 'vue'//引入vue实例
let VueEvent=new Vue();
export default VueEvent;

Home.vue:
<template>
<div>
<h2>我是一个首页组件</h2>
<button @click="EmitNews()">给News组件广播数据</button>
</div>
</template>


<script>
import VueEvent from '../model/VueEvent.js';
export default {
name: "home",
data(){
return {
msg:'首页组件',
title:123,
}
},
methods:{
EmitNews(){//给News组件广播数据
VueEvent.emit('to_news',this.msg); } }, mounted(){ VueEvent.on('to_home',(data)=>{
alert(data)
})
}
}
</script>

<style scoped lang="scss">
h2{
color:red;
}
</style>

News.vue:
<template>
<div>
<h2>我是一个新闻组件</h2>
<button @click="EmitHome()">给Home组件广播数据</button>
</div>
</template>

<script>
import VueEvent from '../model/VueEvent.js';
export default {
name: "news",
data(){
return {
msg:'新闻组件',
}
},
methods:{
EmitHome(){
VueEvent.emit('to_home',this.msg); } }, mounted(){ VueEvent.on('to_news',(data)=>{
alert(data)
})
}
}

</script>

<style scoped>

</style>

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

推荐阅读更多精彩内容

  • # 传智播客vue 学习## 1. 什么是 Vue.js* Vue 开发手机 APP 需要借助于 Weex* Vu...
    再见天才阅读 3,694评论 0 6
  • 33、JS中的本地存储 把一些信息存储在当前浏览器指定域下的某一个地方(存储到物理硬盘中)1、不能跨浏览器传输:在...
    萌妹撒阅读 2,138评论 0 2
  • 前言 您将在本文当中了解到,往网页中添加数据,从传统的dom操作过渡到数据层操作,实现同一个目标,两种不同的方式....
    itclanCoder阅读 25,953评论 1 12
  • ## 框架和库的区别?> 框架(framework):一套完整的软件设计架构和**解决方案**。> > 库(lib...
    Rui_bdad阅读 3,018评论 1 4
  • 昨天下午突然想给妈妈在老家北流市买一套房的念头,我一个瞬间的念头被达成了共识并采取了可执行行动的方案。 家里姐妹多...
    玲子随行记阅读 137评论 0 1