子组件向父组件传递事件
父组件的数据是通过变量传递给子组件,子组件内的prop接受数据;子组件内部发生的事件,子组件负责监听事件发生,处理事件则是交给父组件。所以子组件需要将自己内部发生的事件传出去,告诉父组件我这里面出发了什么事情。
由于组件在作用域上是一个独立的、封闭的,有自己的生命周期、有自己的选项对象,它就像是装在一个封闭的盒子里面,它只是被一个更大的盒子(父组件)套住了,没有办法直接将内部绑定的事件,直接绑定在外部组件上或者是父组件上。
它需要一个中间媒介,将自己内部的事件传递出去:
父组件中:
<template>
<child @A(方法名)="a(父组件方法名)"></child>
</template>
methods: {
a(val) { //val是由子组件传递过来的
//处理子组件内部事件
}
将父组件内部方法绑定到“方法变量”中。这个方法就会传递带child子组件内部去。在子组件中某个元素会绑定一个事件,如:
子组件中:
<template>
<button @click="a(参数)"></button>
</template>
methods: {
a(val) {
this.$emit('A', val)
}
}
这样组件每部的参数就可以通过变量A这个媒介传递到父组件的函数内。
终于大搞搞清楚里面的关系了。
网友评论