這次帶給大家Vue.js中v-on事件使用詳解,Vue.js中v-on事件使用的注意事項有哪些,下面就是實戰案例,一起來看一下。
每個 Vue 實例都實作了事件介面(Events interface),即:
使用 $on(eventName) 監聽事件
# 使用 $emit(eventName) 觸發事件
Vue的事件系統分離自瀏覽器的EventTarget API。儘管它們的運作類似,但$on 和 $emit 不是addEventListener 和 dispatchEvent 的別名。
另外,父元件可以在使用子元件的地方直接用 v-on 來監聽子元件觸發的事件。
下面是一個文檔上面的範例:
2017年4月11日更新
<p id="counter-event-example"> <p>{{ total }}</p> <button-counter v-on:increment="incrementTotal"></button-counter> <button-counter v-on:increment="incrementTotal"></button-counter> </p> 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參數,通常不會直接在子元件中修改父元件傳遞下來的訊息,而且透過這樣的一個鉤子去通知父元件對某些參數進行改變
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
#以上是Vue.js中v-on事件使用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!