From 9d8b02a30ab865fa5297401c5b2e856ca6821739 Mon Sep 17 00:00:00 2001 From: Yvan Zhu Date: Wed, 23 Jun 2021 14:03:21 +0800 Subject: [PATCH] Update event.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 增加、修改标点,并调整格式 --- docs/v2/extend/event.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/v2/extend/event.md b/docs/v2/extend/event.md index 2f02b631..cc86dc8c 100644 --- a/docs/v2/extend/event.md +++ b/docs/v2/extend/event.md @@ -682,7 +682,11 @@ export function eventsMixin (Vue: Class) { } } ``` -非常经典的事件中心的实现,把所有的事件用 `vm._events` 存储起来,当执行 `vm.$on(event,fn)` 的时候,按事件的名称 `event` 把回调函数 `fn` 存储起来 `vm._events[event].push(fn)`。当执行 `vm.$emit(event)` 的时候,根据事件名 `event` 找到所有的回调函数 `let cbs = vm._events[event]`,然后遍历执行所有的回调函数。当执行 `vm.$off(event,fn)` 的时候会移除指定事件名 `event` 和指定的 `fn` 当执行 `vm.$once(event,fn)` 的时候,内部就是执行 `vm.$on`,并且当回调函数执行一次后再通过 `vm.$off` 移除事件的回调,这样就确保了回调函数只执行一次。 +非常经典的事件中心的实现,把所有的事件用 `vm._events` 存储起来。 +当执行 `vm.$on(event,fn)` 的时候,按事件的名称 `event` 把回调函数 `fn` 存储起来 `vm._events[event].push(fn)`。 +当执行 `vm.$emit(event)` 的时候,根据事件名 `event` 找到所有的回调函数 `let cbs = vm._events[event]`,然后遍历执行所有的回调函数。 +当执行 `vm.$off(event,fn)` 的时候会移除指定事件名 `event` 和指定的 `fn`。 +当执行 `vm.$once(event,fn)` 的时候,内部就是执行 `vm.$on`,并且当回调函数执行一次后再通过 `vm.$off` 移除事件的回调,这样就确保了回调函数只执行一次。 所以对于用户自定义的事件添加和删除就是利用了这几个事件中心的 API。需要注意的事一点,`vm.$emit` 是给当前的 `vm` 上派发的实例,之所以我们常用它做父子组件通讯,是因为它的回调函数的定义是在父组件中,对于我们这个例子而言,当子组件的 `button` 被点击了,它通过 `this.$emit('select')` 派发事件,那么子组件的实例就监听到了这个 `select` 事件,并执行它的回调函数——定义在父组件中的 `selectHandler` 方法,这样就相当于完成了一次父子组件的通讯。