详解vue中的组件通信的几种方式(一)
2018-08-08 17:25
756 查看
在另一篇文章我们会谈及祖父孙三级之间的通信,传送门:vue组件通信的方式(二)
1.父组件向子组件传值(绑定属性):
首先我们定义一个父组件father.vue:
[code]<template> <div> <h1>父组件</h1> <p>{{mydata}}</p> <hr/> <!--向子组件传值:绑定属性tosondata,father为传入的值--> <son :tosondata="father" @getdata="getsondata"></son> <!--接收子组件的传值:通过子组件触发getdata事件,父组件在getsondata事件中接收--> <hr/> <brother></brother> </div> </template> <script> import son from './son.vue' import brother from './brother.vue' export default{ data(){ return{ father:"我是父组件的数据,已经接收到了", mydata:'' } }, components:{ son, brother }, methods:{ getsondata(value){ // 接收子组件传入的值value this.mydata=value } } } </script>
子组件son.vue:
[code]<template> <div> <h1>子组件</h1> <p>{{tosondata}}</p> <h2>{{mydata1}}</h2> <button @click="btn">摁我传值父组件</button> </div> </template> <script> export default{ data(){ return{ sonmsg:'我是子组件的数据', mydata1:'' } }, props:{ tosondata:String }, methods:{ btn(){ // 触发getdata事件,传入sonmsg值 this.$emit('getdata',this.sonmsg) } }, created(){ // 监听兄弟组件的自定义事件,并接受传入的值 this.$eventhande.$on('change',(val)=>{ this.mydata1=val }) } } </script>
2.子组件向父组件传值($emit触发自定义事件),如上图
3.兄弟组件传值(定义一个vue空实例作为桥梁):
首先我们在main.js中定义vue空实例
[code]//创建vue空实例 let hub=new Vue() Vue.prototype.$eventhande = hub //加入vue原型中,让所有组件可以访问到该对象
然后在定义一个兄弟组件brother.vue:
[code]<template> <div> <h1>我是子组件的兄弟组件</h1> <button @click="todata">摁我传值给兄弟组件</button> </div> </template> <script> export default{ data(){ return{ brotherdata:"我是传给兄弟组件的数据" } }, methods:{ todata(){ // 触发自定义事件change,传入brotherdata值 this.$eventhande.$emit('change',this.brotherdata) } } } </script>
然后我们在另外一个兄弟组件接受该值就OK了,如图1和图2的father.vue,和son.vue
阅读更多相关文章推荐
- 关于react中组件通信的几种方式详解
- 详解vue组件通信的三种方式
- 详解vue跨组件通信的几种方法
- vue2.0组件之间传值、通信的多种方式(干货)
- vue组件详解(三)——组件通信
- vue综合组件间的通信详解
- 详解Android Service与Activity之间通信的几种方式
- Vue组件通信的四种方式汇总
- Vue2.0学习之详解Vue 组件及父子组件通信
- VUE2.0父子组件以及非父子组件通信传参详解
- vue跨组件通信的几种方法
- Vue.js 父子组件通信的十种方式
- vue.js几种不同组件(页面)间传值的方式
- vue注册组件的几种方式总结
- Vue组件间通信方式
- react中组件通信的几种方式
- Angularjs Controller 间通信方式、vue组件之间通信
- Vue.js组件通信的几种姿势
- Vue加载组件、动态加载组件的几种方式
- 详解VUE中常用的几种import(模块、文件)引入方式