• 【vue】父向子组件传参、子组件向父传参


    1.父向子组件传参

    App.vue为父,引入componetA组件之后,则可以在App.vue中使用标签(注意驼峰写法要改成componet-a写法,因为html对大小写不敏感,componenta与componentA对于它来说是一样的,不好区分,所以使用小写-小写这种写法)。

    而子组件componetA中,声明props参数’msgfromfa’之后,就可以收到父向子组件传的参数了。例子中将msgfromfa显示在<p>标签中。

    App.vue中

    <component-a msgfromfa="( 不积跬步,无以至千里;不积小流,无以成江海)"></component-a>
    import componentA from './components/componentA'
    export default {
        new Vue({
            components: {
              componentA
            }
        })
    }

    componentA.vue中

    <p>{{ msgfromfa }}</p>
    export default {
        props: ['msgfromfa']
    }

    2.子组件向父传参

    2.1  .$emit

    用法:vm.$emit( event, […args] ),触发当前实例上的事件。附加参数都会传给监听器回调。
    例子:

    App.vue中component-a绑定了自定义事件”child-say”。

    子组件componentA中,单击按钮后触发”child-say”事件,并传参msg给父组件。父组件中listenToMyBoy方法把msg赋值给childWords,显示在<p>标签中。
    App.vue中

    <p>Do you like me? {{childWords}}</p>
    <component-a msgfromfa="(Just Say U Love Me)" v-on:child-say="listenToMyBoy"></component-a>
    import componentA from './components/componentA'
    export default {
        new Vue({
            data: function () {
                return {
                  childWords: ""
                }
            },
            components: {
              componentA
            },
            methods: {
                listenToMyBoy: function (msg){
                  this.childWords = msg
                }
            }
        })
    }

    componentA.vue中

    <button v-on:click="onClickMe">like!</button>
    import componentA from './components/componentA'
    export default {
        data: function () {
            return {
              msg: 'I like you!'
            }
        },
        methods: {
          onClickMe: function(){
            this.$emit('child-say',this.msg);
          }
        }
    }

    2.2  .$dispatch

    用法:vm.$dispatch( event, […args] ),派发事件,首先在实例上触发它,然后沿着父链向上冒泡在触发一个监听器后停止。
    例子:App.vue中events中注册”child-say”事件。子组件componentA中,单击按钮后触发”child-say”事件,并传参msg给父组件。父组件中”child-say”方法把msg赋值给childWords,显示在<p>标签中。

    App.vue中

    <p>Do you like me? {{childWords}}</p>
    <component-a msgfromfa="(Just Say U Love Me)"></component-a>
    import componentA from './components/componentA'
    export default {
        new Vue({
            events: {
                'child-say' : function(msg){
                  this.childWords = msg
                }
            }
        })
    }

    componentA.vue中

        
    <button v-on:click="onClickMe">like!</button>
    import componentA from './components/componentA'
    export default {
        data: function () {
            return {
              msg: 'I like you!'
            }
        },
        methods: {
          onClickMe: function(){
            this.$dispatch('child-say',this.msg);
          }
        }
    }
  • 相关阅读:
    面试干货——年底干货大放送,你准备好了吗?(转)
    JavaScript学习 三、变量、作用域和内存
    JavaScript学习 二、基础
    JavaScript学习 一、简介
    从统计看机器学习常见算法
    [zz]unity 性能优化
    游戏统计指标
    [zz]sql优化相关
    [zz]sql语句执行顺序
    unity 链接
  • 原文地址:https://www.cnblogs.com/yujihang/p/6838283.html
Copyright © 2020-2023  润新知