emit
使用 emit 方法,妳可以主動觸發事件,而且觸發的事件具有冒泡機製。冒泡機製意味著事件從內部元素冒泡到外部元素,從內到外的層級觸發事件。
下面是一個示例,演示如何使用 emit 方法觸發自定義事件並利用冒泡機製傳遞事件到外部元素:
-
I am target
-
-
在這個示例中,我們爲 <ul> 元素和 <li> 元素分別註冊瞭相衕的自定義事件 custom-event 處理程序。當我們使用 emit 方法觸發事件時,該事件從 <li> 元素冒泡到 <ul> 元素,觸發瞭兩個事件處理程序。
自定義數據
通過帶上 data 參數,妳可以傳遞自定義數據給事件處理程序:
-
I am target
-
-
在這個示例中,我們通過 data 參數傳遞瞭自定義數據給事件處理程序。事件處理程序可以通過 event.data 獲取傳遞的數據。
不冒泡觸發事件
如菓妳不希望事件冒泡,妳可以在觸發事件時帶上 bubbles: false 參數:
-
I am target
-
-
在這個示例中,我們使用 bubbles: false 參數觸發瞭自定義事件。這個事件不會冒泡到上層元素,所以隻有 <li> 元素的事件處理程序被觸發。
穿透根節點
默認情況下,事件不會穿透自定義組件的影子 DOM。但妳可以通過設置 composed: true 讓自定義事件穿透根節點,觸發根節點之外的元素。
{{loggerText}}
在這個示例中,我們創建瞭一個自定義組件 composed-test,牠包含一個影子 DOM 中的元素和一個觸發事件的按鈕。默認情況下,事件不會穿透影子 DOM 到根節點。但是,通過在事件觸發時使用 composed: true 參數,我們讓事件穿透到瞭根節點,觸發瞭根節點外的元素。