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行就可以获取值。
标签:向子,Vue,show,com2,func,组件,方法,emit 来源: https://www.cnblogs.com/ella-li/p/14646379.html