zoukankan      html  css  js  c++  java
  • Vue之父组件向子组件传递方法

    二、父组件向子组件传递方法

        该问题可以理解为“子组件如何调用父组件的方法”,根据对父组件向子组件传值过程的理解,该过程还是分为两个步骤:

            1、父组件如何将方法传给子组件?

            2、子组件如何获取父组件传过来的方法?

        解读vue示例代码:

            1、父组件通过“事件绑定机制”将方法传给子组件。

            2、子组件在methods属性中用this.$emit('func')获取父组件传递的方法。

        过程分析:

            1、首先在定义的vue对象实例中定义一个show方法(第32行),然后我们通过components属性将定义的子组件com2引用一下,在第2行以标签的形式加以引用,在标签里面用事件绑定机制将show绑定给func,此时已成功将父组件的show方法传递给了子组件com2;

            2、我们需要触发并调用父组件传递过来的方法,在子组件com2的methods属性中定义了点击事件方法,点击的时候通过this.$emit('func',this,sonmsg)获取父组件的方法。

        注意:

            1、@func='show' 不是show(),表示将show()的引用直接给func,如果是show()表示将方法的结果给func,注意含义不一样。

            2、this.emit()emit(),emit是触发的意思,第一个参数是父组件传递的方法名,从第二个参数开始可以传递额外的参数。

     1 <div id='app'>
     2      <com2 @func='show'></com2>
     3  </div>
     4 
     5 <template id='tem1'>
     6     <div>
     7         <h1>这是子组件</h1>
     8         <input type="button" value="子组件的按钮,点击调用父组件传递过来的func方法" @click='myclick'>
     9     </div>
    10 </template>
    11 
    12 //定义一个字面量类型的组件模板对象
    13 var com2 = {
    14     tenplate:'#tem1',
    15     data(){
    16         return{
    17             sonmsg:{name:'son',age:6}
    18         }
    19     },
    20     methods:{
    21         myclick(){
    22            this.$emit('func’,this.sonmsg);
    23         }
    24     }
    25 }
    26 
    27  var vm = new Vue({
    28      el:'#app',
    29      data:{
    30          data_form_son: ''
    31      },
    32      methods:{
    33         show(param){
    34             console.log("调用父组件的show方法"+JSON.stringify(param));
    35             this.data_form_son = JSON.stringify(param);
    36         }
    37     },
    38      components:{
    39          com2
    40      }
    41  })

     三、子组件通过事件调用向父组件传值。

        看代码22行,子组件调用父组件方法的时候将this.sonmsg传递,然后在33行在show方法里面传参,35行就可以获取值。

  • 相关阅读:
    codeforces 616E. Sum of Remainders 数学
    codeforces 620F. Xors on Segments
    codeforces 417D. Cunning Gena 状压dp
    bzoj 1934 : [Shoi2007]Vote 善意的投票 最小割
    codeforces 628F. Bear and Fair Set 网络流
    codeforces 626E. Simple Skewness 三分
    div嵌套,内层的margin-top会跑到外层
    测试用导航(为了方便在各个测试页面间进行跳转,只需将此js代码引入每个页面即可) V2.0
    ECS_8080端口连接拒绝问题排查
    京东技术架构(二)构建需求响应式亿级商品详情页
  • 原文地址:https://www.cnblogs.com/ella-li/p/14646379.html
Copyright © 2011-2022 走看看