2018-03-29

2018-03-29  本文已影响0人  小熊530

子组件向父组件传递事件

父组件的数据是通过变量传递给子组件,子组件内的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这个媒介传递到父组件的函数内。
终于大搞搞清楚里面的关系了。

上一篇 下一篇

猜你喜欢

热点阅读