Vue子组件向父组件传data数据

在Vue中,子组件是怎么向父组件传自己的data数据?

原理:父组件可以通过给子组件绑定 虚拟事件 来向子组件传递自己的方法,因此这个虚拟事件就装载了父组件的方法,子组件拿到虚拟事件之后进行注册,就可以使用来自父组件的方法了,因此,只需要向虚拟事件传递参数,那么就相当于向父组件的方法传递参数,而父组件也因此拿到了来自子组件的数据。

说那么多,直接上代码:(按照数据传递的流动方向)

// 1. 创建一个子组件com1

Vue子组件向父组件传data数据

// 2. 父组件通过给子组件绑定虚拟事件sonme,来向子组件传递 fatherme() 方法

Vue子组件向父组件传data数据

// 3. 子组件拿到虚拟事件sonme之后,使用 this.$emit() 进行注册,第一个参数就是要注册的 虚拟事件,例如注册了sonme

Vue子组件向父组件传data数据

注册虚拟事件之后,就相当于子组件拿到了父组件传递过来的 fatherme() 方法

// 4. 向父组件的方法传递参数,this.$emit() 的第二个参数就是 要传递的参数

Vue子组件向父组件传data数据

Vue子组件向父组件传data数据

因为要传递子组件的data数据,因此第二个参数填的就是子组件的data数据,例如传递子组件的私有数据 sonmsg

// 5. 这个时候父组件的方法已经拿到了来自子组件的data数据(sonmsg)

父组件可以定义一个data数据 fathermsg 来接收来自子组件的数据 sonmsg

Vue子组件向父组件传data数据

把 fatherme() 方法获取的参数(即子组件的data私有数据 sonmsg)赋值给 fathermsg,那么父组件就可以拿到子组件的data数据了