一个项目都有一个根组件 App.vue
一个根组件下面可能会有多个自组件,例如:Hello.vue 和 Header.vue
Hello.vue 和 Header.vue 就是兄弟组件,那么这两个兄弟组件之间又是如何传值的呢?
一个项目都有一个根组件 App.vue
一个根组件下面可能会有多个自组件,例如:Hello.vue 和 Header.vue
Hello.vue 和 Header.vue 就是兄弟组件,那么这两个兄弟组件之间又是如何传值的呢?
// 第一步:引入个空的vue实例 import Vue from 'vue' // 第二步:实例化这个空的vue var vueEvent = new Vue(); // 第三步:将它暴露出去 export default vueEvent;
接下来:Hello是父组件,下面有两个:Header.vue组件和News.vue组件:
<template>
<div >
{{title}}
<v-header></v-header>
<v-news></v-news>
</div>
</template>
<script>
import Header from './Header.vue';
import News from './News.vue';
export default {
name: 'Hello',
data () {
return {
title:'我是Hello组件'
}
},
methods:{
run(){},
},
components:{
'v-header':Header,
'v-news':News,
}
}
</script>
News.vue进行广播
<template>
<div >
{{title}}
<input type="button" value="广播" @click="run()">
</div>
</template>
<script>
import vueEvent from '../model/vueEvent.js';
export default {
name: 'Header',
data () {
return {
title:'我是News组件'
}
},
methods:{
run(){
//进行广播
vueEvent.$emit('toHeader',this.title);
},
}
}
</script>
Header.vue进行接收
<template>
<div >
{{title}}
</div>
</template>
<script>
import vueEvent from '../model/vueEvent.js';
export default {
name: 'Header',
data () {
return {
title:'我是Header组件'
}
},
methods:{
run(){},
},
mounted(){
//加载的时候就要进行接收
vueEvent.$on('toHeader',function(data){
console.log(data);
})
}
}
</script>