vue中兄弟组件间的通信方式

一,子组件传递父组件,再父组件传递子组件

子组件向父组件传值$emit

<son @click="childClick">{{childValue}}</son>
export default {
  data () {
   return {
    childValue: '我是子组件的数据'
   }
  },
  methods: {
   childClick () {  
    this.$emit('childByValue', this.childValue)
   }
  }
 }

父组件接受值

<son v-on:childByValue="childByValue"></son>
data(){
	return{
		name:""	
	}
},
methods: {
   childByValue: function (childValue) {
    // childValue就是子组件传过来的值
    this.name = childValue
   }
  }
}

父组件给子组件传递值

<father :sendSon="value"></father>

子组件接受值

 props:[
	"sendSon"
]

二,事件车

我们可以创建一个单独的js文件eventBus.js,内容如下

import Vue from 'vue'
export default new Vue

父组件中

<template>
     <components-a></components-a>
     <components-b></components-b>
</template>

子组件a中

<template>
      <div class="components-a">
           <button @click="abtn">A按钮</button>
      </div>
</template>
<script>
import eventVue from '@/utils/eventBus.js'
export default {
      name: 'ComponentA',
      data () {
        return {
                ‘msg':"我是组件A"
        }
      },
      methods:{
           abtn=>{
                   eventVue .$emit("myFun",this.msg)   //$emit这个方法会触发一个事件
           }
      }
}
</script>

子组件b中

<template>
     <div class="components-a">
         <div>{{btext}}</div>
     </div>
</template>
<script>
import eventVue from '@/utils/eventBus.js'
export default {
   name: 'ComponentB',
   data () {
        return {
           'btext':"我是B组件内容"
        }
   },
   created:function(){
       this.bbtn();
   },
   methods:{
       bbtn=>{
            eventVue.$on("myFun",(message)=>{
                 this.btext = message      
            })
       }
    }
}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值