这篇文章介绍vue.js组件之同级之间的通信(代码)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>componentknowledge-同级组件通信</title>
<script src="js/vue.js"></script>
</head>
<body>
<template id="aa">
<p>
i am aa component:{{msg}}
<input type="button" @click="send" value="sendto-cc">
</p>
</template>
<template id="bb">
<p>
i am bb component:{{msg}}
<input type="button" @click="send" value="sendto-cc">
</p>
</template>
<template id="cc">
<p>
<p>
i am cc component:{{msg}}/receive data:{{msg2}},{{msg3}}
</p>
</p>
</template>
<script>
window.onload=function(){
let event=new vue();
let aa={//定义组件
template:'#aa',
data(){
return {msg:'aa data'}
},
methods:{
send(){
event.$emit('a-send',this.msg)
}
}
};
let bb={//定义组件
template:'#bb',
data(){
return {msg:'bb data'}
},
methods:{
send(){
event.$emit('b-send',this.msg)
}
}
};
let cc={//定义组件
template:'#cc',
data(){
return {
msg:'cc data',
msg2:'',
msg3:''
}
},
mounted(){
event.$on('a-send',(data)=>{this.msg2=data});
event.$on('b-send',(data)=>{this.msg3=data});
}
};
let vm=new vue({
el:'#app',
components:{//注册组件
aa,
bb,
cc
}
});
}
/*同级组件之间的通信关键总结:
1:新建一个空的root组件:let event=new vue();
其上有两个方法event.$emit('a-fnname',data)/event.$on('a-fnname',(data)=>{})
2:发送数据的组件:event.$emit('a-fnname',data)写在组件的methods里,
3:接收数据的组件:event.$on('a-fnname',(data)=>{}),注意函数格式必须写为箭头函数,不然this指向不是当前组件,一般写在钩子函数里(beforecreate(){}/created(){}/beforemount(){}/mounted(){}/beforeupdate(){}/updated(){}/beforedestroy(){}/destroyed(){})
*/
</script>
<p id="app">
<!--使用组件-->
<aa></aa>
<bb></bb>
<cc></cc>
</p>
</body>
</html>
以上就是vue.js组件之同级之间的通信(代码)的详细内容。