vue组件之间的传值

1.父子组件之间的传值

父组件

<div id="app">
     <my-com1 :dat='msg1' @cd='msg3=$event'></my-com1>
     <p>这是子组件往父组件传的值:<span>{{msg3}}</span></p>
  </div>
 
//vue实例
var app=new Vue({
        el:'#app',
        data:{
            msg1:{
                name:'zhangs',
                text:'hahahaha'
            },
            msg3:''

        },
        methods:{}
    })

子组件

<template id="tem">
          <div>
              <p>这是子组件</p>
              <p>{{dat.name}}</p>
              <p>{{dat.text}}</p>
              <button @click='click'>子组件往父组件传值</button>
          </div>
    </template>
 
Vue.component('my-com1',{
        template:'#tem',
        props:['dat'],
        data(){
            return{
                msg2:'这是子组件传给父组件的值'
            }
        },
        methods:{
            click(){
                this.$emit('cd',this.msg2)
            }
        }
    })

总结

父传子:子组件用props接受;

子传父:子组件用$emit传出,父组件用$event接收

子组件调用父组件的方法:this.$parent 可以访问到父组件 上所有的 data(){ 里的数据信息和生命周期方法,methods里的方法 }!

2、兄弟之间的传值

组件一:

Vue.component('xiong-da',{
    data(){
        return{
            eat:'蜂蜜...'
        }
    },
    template: `
    <div>
        <p>我是熊大</p>
        <button @click='passVal'>传值给熊二</button>
    </div>
    `,
    methods:{
        passVal(){
            // 发送蜂蜜,相当于是发送来一个信息
            bus.$emit('xiong',this.eat);
        }
    }
})

组件二:

Vue.component('xiong-er',{
    data(){
        return{
            msg:''
        }
    },
    template: `
    <div>
        <p>我是熊二</p>
        <p>熊大传递过来的:{{msg}}</p>
    </div>
    `,
    mounted() {
        var _this=this;
        // 接收熊大发送过来的信号
        bus.$on('xiong',function (val) {
            console.log(val)
            _this.msg=val
        })
    },
})

总结

兄弟组件传值两种方式:
        一: 组件一 - 父组件 - 组件二
        二: bus(中间vue实例)
            $on 接收数据的组件
            $emit 发送数据的组件
原文地址:https://www.cnblogs.com/wangyue6/p/13030193.html