zoukankan      html  css  js  c++  java
  • Vue 组件间的通讯

    一、首先是父组件传给子组件

    var startVue_1 = new Vue({
            el:'#container-1',
            data:{
                g3:'3'
            },
            components: {
                'lchild':{
                    props:['papa'],
                    template:"<input class = 'input' v-model='papa' type='text' placeholder='我局部子组件'></input>"
                }
            },
        });
    // html
    <div class = 'container' id='container-1'>
       <lchild :papa='g3'></lchild>
    </div>

    这样lchild这个组件就接收到了g3的值,并绑定;

    二、子组件传给父组件

    修改一下代码:

    var startVue_1 = new Vue({
            el:'#container-1',
            data:{
                g3:'3'
            },
            components: {
                'my-component': board,
                'lchild':{
                    props:['papa'],
                    data:function(){
                        return {
                            g6:'6'
                        }
                    },
                    template:"<input class = 'input'    v-model='g6' @blur='backData' placeholder='我局部子组件'></input>",
                    methods: {
                        backData:function(){
                            // 派发事件 back,在父组件处接收
                            this.$emit('back',this.g6)
                        }
                    }
                }
            },
            methods:{
                //  接收到back事件执行setD
                setD:function(e){
                    this.g3 = e
                }
            }
        });

    然后在父组件处监听事件:

    <input v-model='g3' placeholder='我是直接写出来的' class = 'input'>
    
    <lchild @back='setD'></lchild>

    执行,看下结果:(结果正常,子组件传值成功)

    三、子组件与子组件之间的通讯

    这里只是简单地结合一二,把值传给父组件,再把值传给另外一个子组件

    Vue.component('gchild',{
            template:"<div class = 'inputItem'><h4>全局:</h4><input class = 'input' type='text' v-model='data' placeholder='我全局子组件'></input></div>",
            props:['data']
    })

    再在html处绑定:

    <gchild :data='g3'></gchild>

    执行:

    四、两个不同实例的传值

    其实这个最简单,和普通的对象传值一样,直接拿到

    var startVue_1 = new Vue({
            el:'#container-1',
            data:{
                g3:'3'
            }
    })
    
     var startVue_2 = new Vue({
            el:'#container-2',
            data:{
                // 这样就拿到了startVue_1的g3的值
                g2:startVue_1.$data.g3
            }
        })
  • 相关阅读:
    问题账户需求分析
    2017年秋季个人阅读计划
    阅读笔记01
    个人总结
    第二阶段站立会议07
    第二阶段站立会议06
    第二阶段站立会议05
    第二阶段站立会议04
    第二阶段站立会议03
    学习进度条(第十五周)
  • 原文地址:https://www.cnblogs.com/lastnigtic/p/6783029.html
Copyright © 2011-2022 走看看