试着了解Vue2的$ emit

时间:2018-06-03 22:24:29

标签: vue.js

我想知道Vue2的$ emit是如何起作用的?

在其API(https://vuejs.org/v2/api/#vm-emit)上,它说:

  

当前实例上触发事件。任何其他参数   将被传递给监听器的回调函数。

如果当前实例意味着定义了组件,而其主要用途是向父母发送信号(https://vuejs.org/v2/guide/components.html#Sending-Messages-to-Parents-with-Events

我想知道如何理解这一点(事件通过的方式对我很困惑)?

感谢

2 个答案:

答案 0 :(得分:0)

简单地说,$emit在一个组件中注册一个事件,然后你可以在任何使用该组件的地方听这个事件。

假如你在这个组件中有Child.vue和某处,你做了:

.$emit('some-event')

然后,您可以在重用Child组件时收听此事件,例如在另一个组件SomeComponent.vue中,您可以这样做:

<template>
    <child @some-event="doSomething"></child>
</template>

所以这里的事件是在子组件中触发的,但您决定在父组件中使用doSomething做什么。希望这是有道理的!

答案 1 :(得分:0)

文档上的措辞可能会让某些人感到困惑。

可能有以下几点:&#34;使vm当前实例调度事件&#34;会更清楚吗?

最后,它只是一个经典的pub / sub模式:组件实例发出/调度/触发事件,其他组件(通常是父组件)监听/订阅(v-on / {{1} })到那个事件。