非父子通信
1.非父子之间通信的方式
- eventBus A=>B A和B同时存在
- vuex(状态管理) 缺点:页面刷新之后数据立即消失
- 本地存储: localStorage sessionStorage
方式一
在main.js
// eventBus
Vue.prototype.aa = 20,
Vue.prototype.event = new Vue();
a组件
<template>
<div class="box">
<h1>A组件</h1>
<input type="text" v-model="name">
<div>name的值为:{{name}}</div>
<button @click="send">发送</button>
</div>
</template>
<script>
export default {
data(){
return {
name:'王一博'
}
},
methods:{
send(){
// this.event:就是一个vue实例,且是公共的
this.event.$emit('message',this.name)
}
},
mounted(){
// console.log(this.event);
},
watch:{
name:function(){
this.event.$emit('message',this.name)
}
}
}
</script>
<style>
</style>
b组件
<template>
<div class="box">
<h1>B组件</h1>
<input type="text" v-model="name">
<div>name的值为:{{name}}</div>
<button @click="send">发送</button>
</div>
</template>
<script>
export default {
data(){
return {
name:''
}
},
methods:{
send(){
this.event.$emit('message',this.name)
}
},
mounted(){
// console.log(this.aa);
// $on() 监听
this.event.$on('message',(name)=>{
// console.log(name);
this.name = name
})
}
}
</script>
<style>
</style>