• Vue 父子组件及同级组件之间的传值


    1.父组件  father.vue

    <template>
        <div id="father">
            <h2>父组件</h2>
            <p>数值:{{m}}</p>
            <son1 v-on:giveFather='giveFather'></son1>
            <son2></son2>
        </div>
    </template>
    
    <script>
        import son1 from './son1'
        import son2 from './son2'
        export default {
            data(){
                return {
                    m:''
                }
            },
            name:'father',
            components:{
                son1,
                son2
            },
            methods:{
                giveFather: function(childValue) {
                // childValue就是子组件传过来的值
                    this.m = childValue
                  }
            }
        }
    </script>

    2.子组件1 son1.vue

    <template>
        <div id="son1">
            <h2>子组件1</h2>
            <button @click='push'>向兄弟组件传值</button>
            <button @click='give'>向father组件传值</button>
        </div>
    </template>
    
    <script>
        import bus from '../../assets/eventBus'
        export default {
            methods:{
                push(){
                    bus.$emit("userDefinedEvent","this message is from son1 to son2");
                },
                give(){
                    this.$emit('giveFather',"this message is from son1 to father")
                }
            }
        }
    </script>

    3.子组件2 son2.vue

    <template>
        <div id="son2">
            <h2>子组件2</h2>
            <p>数值:{{msg}}</p>
        </div>
    </template>
    
    <script>
        import bus from '../../assets/eventBus'
        export default {
            data(){
                return {
                    msg:''
                }
            },
            mounted(){
                var self = this;
                bus.$on("userDefinedEvent",function(msg){
                    self.msg=msg;
                });
            }
        }
    </script>

    4.中央事件总线

    同级组件传值时,需要添加中央数据总线  在src/assets/下创建一个eventBus.js,内容如下

    (eventBus中我们只创建了一个新的Vue实例,以后它就承担起了组件之间通信的桥梁了,也就是中央事件总线。)

    import Vue from 'Vue'
    
    export default new Vue

    5.效果

    5.总结
     子组件向父组件传值时,在响应该点击事件的函数中使用$emit来触发一个自定义事件,并传递一个参数。在父组件中的子标签中监听该自定义事件并添加一个响应该事件的处理方法 ;

    同级组件传值时,用到bus.$emit和bus.$on两个自定义事件,并需要创建并添加中央数据总线

  • 相关阅读:
    使用 IntraWeb (15)
    使用 IntraWeb (10)
    使用 IntraWeb (8)
    Oralce问题之Oracle ORA-28001:某用户密码过期
    Oralce问题之ORA-12560:TNS协议适配器错误
    JS中数组初始化以及赋值
    EasyUI中取的DataGrid中选中行数据
    反编译DLL并修改DLL中的内容
    在SqlServer和Oralce中创建索引
    SQL中左连接on and条件和where条件执行先后顺序
  • 原文地址:https://www.cnblogs.com/ltt124/p/10132075.html
Copyright © 2020-2023  润新知