Vue.js 是一款流行的 JavaScript 框架,它有著事件系統,可以通過 $on() 和 $emit() 方法實現組件之間的通信。在這里,我們將重點介紹 Vue.js 的 $emit() 方法,它可以讓你在組件之間傳遞數據并且觸發自定義事件。
$emit() 方法可以在一個 Vue 實例上觸發一個自定義事件。這個方法需要接受兩個參數:自定義事件的名稱和需要傳遞的數據。例如,下面的代碼在點擊按鈕時觸發了一個名為 "add-counter" 的自定義事件,同時傳遞了當前的計數器數量:
在代碼中,我們使用了 @click 指令來監聽按鈕點擊事件,并且調用了 $emit() 方法以便在 Vue 實例中觸發一個自定義事件。同時,我們在 $emit() 方法中傳遞了兩個參數,分別是自定義事件的名稱和需要傳遞的數據。
當組件觸發一個自定義事件時,其他組件需要通過 $on() 方法來監聽這個事件。它接受兩個參數:自定義事件的名稱和回調函數。當自定義事件被觸發時,回調函數將會被調用。下面是一個簡單的例子,在其中,一個名為 "counter" 的計數器組件監聽了一個名為 "add-counter" 的自定義事件,并且在這時增加自己的計數值:
Vue.component('counter', { data: function() { return { count: 0 } }, template: ``, created: function() { this.$on('add-counter', function(count) { this.count += count; }); } });Count: {{ count }}
在上面的例子中,我們創建了一個名為 "counter" 的組件,并且在組件的模板中監聽了一個名為 "add-counter" 的自定義事件。當該事件被觸發時,我們調用了組件的 $emit() 方法,并傳遞了當前的計數器數量,最終實現了在組件之間傳遞數據并且觸發自定義事件的效果。