Vue事件機制

2021-08-21 10:46:49 字數 1966 閱讀 5368

眾所周知,vue.js為我們提供了四個事件api,分別是

$on$once$off$emit

初始化事件

初始化事件在vm上建立乙個_events物件,用來存放事件。_events的內容如下:

存放事件名以及對應執行方法。

/*初始化事件*/

export function

initevents

(vm: component)

}

$on

$on方法用來在vm例項上監聽乙個自定義事件,該事件可用$emit觸發。

vue.prototype.$on = function

(event: string | array, fn: function)

: component

} else

}return vm

}

$once

$once監聽乙個只能觸發一次的事件,在觸發以後會自動移除該事件。

vue.prototype.$once = function

(event: string, fn: function)

: component

on.fn = fn

vm.$on(event, on)

return vm

}

$off

$off用來移除自定義事件

vue.prototype.$off = function

(event?: string | array, fn?: function)

: component

// array of events

/*如果event是陣列則遞迴登出事件*/

if (array.isarray(event))

return vm

}// specific event

const cbs = vm._events[event]

/*github:

/*本身不存在該事件則直接返回*/

if (!cbs)

/*如果只傳了event引數則登出該event方法下的所有方法*/

if (arguments.length === 1)

// specific handler

/*遍歷尋找對應方法並刪除*/

let cb

let i = cbs.length

while (i--)

}return vm

}

$emit

$emit用來觸發指定的自定義事件。

vue.prototype.$emit = function

(event: string)

: component "

is emitted in component ` +

`$ but the handler is registered for

"$". ` +

`note that html attributes are case-insensitive and you cannot use ` +

`v-on to listen to camelcase events when using in-dom templates. ` +

`you should probably use

"$" instead of "$".`)}

}let cbs = vm._events[event]

if (cbs)

}return vm

}

Vue事件機制

眾所周知,vue.js為我們提供了四個事件api,分別是 on,once,off,emit。初始化事件在vm上建立乙個 events物件,用來存放事件。events的內容如下 存放事件名以及對應執行方法。初始化事件 export function initevents vm component on...

mysql事件機制 mysql事件機制 定時任務

定時任務是老生常談了,因為我們總是需要定時修改特定的資料。實現它的方法肯定不止一種,但我在相當長一段時間裡都是用程式編碼去做的,今天突然想到 為什麼一定要採用呼叫的方式?用資料庫自身的能力去實現不是更好麼?通過了解,mysql的事件機制可以完成定時任務,其原理是在指定的時間呼叫指定的儲存過程。現在很...

mysql事件機制 mysql事件機制 定時任務

定時任務是老生常談了,因為我們總是需要定時修改特定的資料。實現它的方法肯定不止一種,但我在相當長一段時間裡都是用程式編碼去做的,今天突然想到 為什麼一定要採用呼叫的方式?用資料庫自身的能力去實現不是更好麼?通過了解,mysql的事件機制可以完成定時任務,其原理是在指定的時間呼叫指定的儲存過程。現在很...