本文章向大家介紹如何在Vue.js 組件使用v-on綁定自定義事件的基本知識點總結和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下。
Vue是一套用于構建用戶界面的漸進式JavaScript框架,Vue與其它大型框架的區別是,使用Vue可以自底向上逐層應用,其核心庫只關注視圖層,方便與第三方庫和項目整合,且使用Vue可以采用單文件組件和Vue生態系統支持的庫開發復雜的單頁應用。
每個 Vue 實例都實現了事件接口(Events interface),即:
使用 $on(eventName) 監聽事件
使用 $emit(eventName) 觸發事件
Vue的事件系統分離自瀏覽器的EventTarget API。盡管它們的運行類似,但是$on 和 $emit 不是addEventListener 和 dispatchEvent 的別名。
另外,父組件可以在使用子組件的地方直接用 v-on 來監聽子組件觸發的事件。
<div id="counter-event-example">
<p>{{ total }}</p>
<button-counter v-on:increment="incrementTotal"></button-counter>
<button-counter v-on:increment="incrementTotal"></button-counter>
</div>
Vue.component('button-counter', {
template: '<button v-on:click="increment">{{ counter }}</button>',
data: function () {
return {
counter: 0
}
},
methods: {
increment: function () {
this.counter += 1
this.$emit('increment')
}
},
})
new Vue({
el: '#counter-event-example',
data: {
total: 0
},
methods: {
incrementTotal: function () {
this.total += 1
}
}
})跟著這個例子我來談談理解,更新以前我那種錯誤的思想
先畫出理解的步驟,跟著步驟來進行理解

步驟1:
大家先看到這里,其實在步驟4里面的自定義標簽經過渲染之后是變成了如 步驟一 一樣的代碼,所以我們應該從這里入手理解父子組件間事件綁定。在子組件里面把點擊事件(click)綁定給了函數increment(即圖片里面的步驟2),這里容易理解,即點擊了子組件的按鈕將會觸發位于子組件的increment函數
步驟2與步驟3:
increment函數被觸發執行,在步驟2里面執行了一句調用函數的語句
this.$emit('increment')我們來看一下文檔
vm.$emit( event, […args] ) : 觸發當前實例上的事件。附加參數都會傳給監聽器回調
在這里是什么意思呢?按我自己的大白話就是這樣說的:
通過這句函數可以讓父組件知道子組件調用了什么函數,this.$emit(‘increment') 即類似于子組件跟父組件說了一聲“hi,爸爸 我調用了我自己的increment函數”,通知父組件
步驟4:
回看一下在父組件里面定義的自定義標簽,可以看到
v-on:increment="incrementTotal"
什么意思呢?我們還是用大白話來解釋一下
就是說“孩子,當你調用了increment函數的時候,我將調用incrementTotal函數來回應你”
這時我們回想步驟3,在子組件我們已經使用emit來進行通知,所以,這樣就形成父子組件間的相互呼應傳遞信息,其實在開發的過程中父子組件通訊也都是使用這樣的方法,父組件傳遞信息給子組件的時候會通過props參數,通常不會直接在子組件中修改父組件傳遞下來的信息,而且通過這樣的一個鉤子去通知父組件對某些參數進行改變
以上就是小編為大家帶來的如何在Vue.js 組件使用v-on綁定自定義事件的全部內容了,希望大家多多支持億速云!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。