vue组件通讯 子传父 父传子 兄弟传值(开发实例)

喜夏-厌秋 提交于 2019-11-27 09:16:31

 

父组件

<template>
     <div id="app">
        <dome :msgs="mag" :adds="add" ref="doem"></dome> //子组件
     </div>
</template>
<script>

//引入子组件
import dome from '@/components/dome'

export default {
  components: {
       dome    //挂载子组件
  },
  data () {
      return {
          mag:"我是父组件数据"
      },
   methods:{
      add(){
          console.log('我是父组件方法')
      },

    //父组件调用子组件方法及数据 字组件必须绑定 ref 标识符
      fun(){
          //拿去子组件方法
           this.$refs.doem.obj
      }
  },

</script>

dome子组件接收父组件数据

<template>
  <div class="dome”>
   子组件
  </div>
</template>
<script>
    export default {
    data(){
        return{
           obj:{name:"子组件"}
        }

    },
    props:{    //接收父组件数据 mags 及 方法adds
        adds:{
          type:Function
        },
        msgs:{
           type:String
        }
    }
}

</script>

 

兄弟组组件传递数据需要在main.JS配制

let bus = new Vue()
Vue.prototype.bus = bus;

父组件

<template>
     <div id="app">
          <dome></dome> //子组件
          <card></card> //子组件 
     </div>
</template>
<script>

//引入子组件
import dome from '@/components/dome'
import card from '@/components/card'
    export default {
    components: {
       dome ,card   //挂载子组件
     }

  },
</script>

dome向card组件传递数据

<template>
   <div class=“dome”>
     <header @click="changeTitle"></header>
   </div>
</template>
<script>
export default {
data(){
    return{
        title:"兄弟传值"
    }
},
methods:{
    changeTitle () {    //通过事件去触发 
         this.bus.$emit('toChangeTitle',this.title) 
    }
}

</script>

card接收dome组件传递数据

<template>
  <div  class=“card”>
    {{title}}
  </div>
</template>
<script>
export default {
data(){
    return{
        title : “”
    }
},
mounted () {   //on方法接收兄弟传值
    this.bus.$on('toChangeTitle', (title)=>{
            this.title = title
            console.log(title)
        })
    },
}

</script>

 

 

喜欢上方小程序,需要源码的,私信关注小编留下邮箱。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!