
作者:天津九安特機電工程有限公司 來(lái)源: 天津九安特機電工程有限公司 日期:2026-05-04 16:51:25
Vue(′-ι_-`).js 是手動(dòng)事件一個(gè)用于構建用戶(hù)界面的漸進(jìn)(jin)式框架,在 Vue 中,手動(dòng)(???)事件我們可以使用 v-on 指令或者簡(jiǎn)寫(xiě) @ 來(lái)監聽(tīng)事件,手動(dòng)事件有時(shí)候我們可能需要手動(dòng)觸發(fā)一個(gè)事件,手動(dòng)事件例如在某些邏輯處理之后需要刷新列表數據,手動(dòng)事件如何在 Vue 中手動(dòng)觸發(fā)事件呢?手動(dòng)事件本文將詳細介紹如何在 Vue 中手動(dòng)觸發(fā)事件的方法。
1、手動(dòng)事件使用 $emit 方法
在 Vue 中,手動(dòng)事件我們可以使用實(shí)例的手動(dòng)事件 $emit 方法來(lái)手動(dòng)觸發(fā)一個(gè)事件。$emit 方法接收兩個(gè)參數??:第一個(gè)參數是手動(dòng)事件事件名??,第二個(gè)參數(可選)是手動(dòng)事件傳遞給事件的參數,當 $emit 方法被調用時(shí),手動(dòng)事件它會(huì )觸發(fā)當前實(shí)例上的手動(dòng)事件指定事件,并將參數傳遞給事件監聽(tīng)器。手動(dòng)事件
示例代碼:
<template>ˉ\_(ツ)_/ˉ; <button @click="handleClick">點(diǎn)擊我</button></template&g??t;<script>export default { methods: { handleClick() { // 手動(dòng)觸發(fā)名為 'my-event' 的事件,并傳遞參數 'Hello,(???) World!' this.$emit('my-event', 'Hello, World!'); } }};</script>2、使用實(shí)例的 $dispatchEvent 方法
除了 $emit 方法,我們還可以使用實(shí)例的 $dispatchEvent 方法來(lái)手動(dòng)觸??發(fā)一個(gè)事件。$dispatchEvent 方法接收兩個(gè)參數:第一個(gè)參數是事(shi)件對象,第二個(gè)參數(可選)是傳遞給事(╯°□°)╯件的參數,當 $dispatchEvent 方法被調用時(shí),它會(huì )觸發(fā)當前實(shí)例上的指定事件,并將參數傳遞給事件監聽(tīng)器。
示例代碼:
<template> <button @c??lick="handleClick">點(diǎn)擊我</button></template><script>export default { methods: { handleClick() { // 創(chuàng )建一個(gè)名為 'my-event' 的事件對象,并設置其 type 屬性為 'my-event' const event = new Event('my-event'); // 手動(dòng)觸發(fā)名為 'my-event' 的事件,并傳遞參數 'Hello, World!' this.$dispatchEvent(event, 'Hello, World!'); } }};</script&g??t;3、使用原生 JavaScript 的 dispatchEvent 方法
如果我們不使用 Vue.js,而是使用原生 JavaScript??,我們也可以使用 dispatchEvent 方法來(lái)手動(dòng)觸???發(fā)一個(gè)事件,dispatchEvent 方法接收一個(gè)參數:事件對象,當 dispatchEvent 方法被調用時(shí),它會(huì )觸發(fā)指定元素的指定事件。
示例代碼:
<button id="myButton">??點(diǎn)擊我</button><script>document.getE(T_T)lementById('myButton').addEventListener('my-event', function(e) { console.log('自定義事件被觸發(fā):', e.detail); // 輸出:自定義事件被觸發(fā)(????):Hello, World!});document.getElementById('myButton').addEventListener('click', function() { // 手動(dòng)觸發(fā)名為 'my-??event' 的事件ヽ(′▽?zhuān)?/,(?????)并傳遞參數 'Hello,?? World!' const event = new CustomEvent('my-event', { detail: 'Hello, World!' }); this.??dispatchEvent(event);});&l(′▽?zhuān)?t;/script>4、使用原生 JavaScript 的(de) crea??teEvent 和 initEvent 方法(已廢棄)
在舊版本的瀏覽器中,我們??可以使用 createEvent 和 initEvent 方法來(lái)手動(dòng)觸發(fā)一個(gè)事件,createEvent 方法接收兩個(gè)參數:事件類(lèi)型和布爾值表示是??否可冒泡,initEvent 方法接收三個(gè)參數:事件類(lèi)型、布爾值表示是否可冒泡和一個(gè)布爾值表示是否可取消,當這兩個(gè)方法被調用時(shí),它們會(huì )創(chuàng )建一個(gè)指定類(lèi)型的事件對象,并將其初始化,我們可以使用 dispatchEvent 方法來(lái)觸發(fā)(fa)這個(gè)事件,需要注意的是,createEvent 和 initEvent 方法已經(jīng)被廢棄,不建議在??新項目中使用。
示例代碼:
<button id="myButton">點(diǎn)擊我</button><script>document.getElementById('myButton').addEventListener('my-event', function(e) { console.l??og('自定義事件被觸發(fā):', e.detail); // 輸出:(???)自定義事件被(bei)觸發(fā):Hello, World!});documentヽ(′?`)ノ.ge??tElementByI??d('myButton').addEventListener('click', function() { // 手動(dòng)觸發(fā)名為 'm(???)y-event' 的事件,并傳遞參數 'Hello, World!' const event = document.createEvent('CustomEvent'); // IE9+兼容的創(chuàng )建自定(′?_?`)義事件的方法 event.initCustomEvent('my-even??t', true,?? true, 'Hello, World!'); // IE9+兼容??的初始化自定義事件的方法 this.dispatchEvent(event); // IE9+兼容的觸發(fā)事件的方法,其他瀏覽器使用 dispatchEvent(new CustomEve???nt('my-event', { detail: 'Hello, World!' }));});</script>