zoukankan      html  css  js  c++  java
  • 【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);
          }
        }
    }
  • 相关阅读:
    用ssh整合时,用sessionfactory的getCurrentSession()获取不到session
    layim+signalr2.0+mongodb在线轻聊版解决方案(可提供演示)
    (绿色)修正版gooflow流程解决方案(源码分享+在线演示+UI地址下载)
    一个开源的可视化的jQuery工作流插件
    自定义流程gooflow.08 demo在线演示
    asp.net mvc 系统操作日志设计
    第三方系统平台如何对接gooflow2.0
    一个供新手把玩的jQueryUI在线文档
    Ninject 自动注册
    JQuery.imgAreaSelect 参数说明
  • 原文地址:https://www.cnblogs.com/yujihang/p/6838283.html
Copyright © 2011-2022 走看看