zoukankan      html  css  js  c++  java
  • 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 发送数据的组件
  • 相关阅读:
    Ubuntu12.04安装svn1.8
    [NOIP模拟测试3] 建造游乐园 题解(欧拉图性质)
    图论模板
    [bzoj3073] Journeys 题解(线段树优化建图)
    [bzoj3033]太鼓达人 题解(搜索)
    [NOIP2016]天天爱跑步 题解(树上差分) (码长短跑的快)
    [HNOI2015]菜肴制作 题解(贪心+拓扑)
    [SDOI2015]排序 题解 (搜索)
    [CQOI2011]放棋子 题解(dp+组合数学)
    [ZJOI2011]看电影(组合数学/打表+高精)
  • 原文地址:https://www.cnblogs.com/wangyue6/p/13030193.html
Copyright © 2011-2022 走看看