事件處理
若是須要在內聯語句處理器中訪問原生DOM事件。可使用特殊變量$event
,把它傳入到methods
中的方法中。html
在Vue中,事件修飾符處理了許多DOM事件的細節,讓咱們再也不須要花大量的時間去處理這些煩惱的事情,而能有更多的精力專一於程序的邏輯處理。在Vue中事件修飾符主要有:vue
.stop
:等同於JavaScript中的event.stopPropagation()
,防止事件冒泡.prevent
:等同於JavaScript中的event.preventDefault()
,防止執行預設的行爲(若是事件可取消,則取消該事件,而不中止事件的進一步傳播).capture
:與事件冒泡的方向相反,事件捕獲由外到內.self
:只會觸發本身範圍內的事件,不包含子元素.once
:只會觸發一次
.stop 防止事件冒泡
冒泡事件:嵌套兩三層父子關係,而後全部都有點擊事件,點擊子節點,就會觸發從內至外 子節點-》父節點的點擊事件瀏覽器
<!-- HTML --> <div id="app"> <div class="outeer" @click="outer"> <div class="middle" @click="middle"> <button @click="inner">點擊我(^_^)</button> </div> </div> <p>{{ message }}</p> </div> let app = new Vue({ el: '#app',
data () { return { message: '測試冒泡事件' } }, methods: { inner: function () { this.message = 'inner: 這是最裏面的Button' }, middle: function () { this.message = 'middle: 這是中間的Div' }, outer: function () { this.message = 'outer: 這是外面的Div' } } })
防止冒泡事件的寫法是:在點擊上加上.stop至關於在每一個方法中調用了等同於event.stopPropagation(),點擊子節點不會捕獲到父節點的事件
app
<!-- HTML --> <div id="app"> <div class="outeer" @click.stop="outer"> <div class="middle" @click.stop="middle"> <button @click.stop="inner">點擊我(^_^)</button> </div> </div> </div>
.prevent取消默認事件
.prevent
等同於JavaScript的event.preventDefault()
,用於取消默認事件。好比咱們頁面的<a href="#">
標籤,當用戶點擊時,一般在瀏覽器的網址列出#
:post
.capture 捕獲事件
捕獲事件:嵌套兩三層父子關係,而後全部都有點擊事件,點擊子節點,就會觸發從外至內 父節點-》子節點的點擊事件學習
<!-- HTML --> <div id="app"> <div class="outeer" @click.capture="outer"> <div class="middle" @click.capture="middle"> <button @click.capture="inner">點擊我(^_^)</button> </div> </div> </div>
.self
修飾符.self
只會觸發本身範圍內的事件,不會包含子元素。測試
<!-- HTML --> <div id="app"> <div class="outeer" @click.self="outer"> <div class="middle" @click.self="middle"> <button @click.stop="inner">點擊我(^_^)</button> </div> </div> </div>
.once 只執行一次點擊
若是咱們在@click
事件上添加.once
修飾符,只要點擊按鈕只會執行一次。this
鍵盤修飾符
在JavaScript事件中除了前面所說的事件,還有鍵盤事件,也常常須要監測常見的鍵值。在Vue中容許v-on
在監聽鍵盤事件時添加關鍵修飾符。記住全部的keyCode
比較困難,因此Vue爲最經常使用的鍵盤事件提供了別名:url
.enter
:回車鍵.tab
:製表鍵.delete
:含delete
和backspace
鍵.esc
:返回鍵.space
: 空格鍵.up
:向上鍵.down
:向下鍵.left
:向左鍵.right
:向右鍵
鼠標修飾符
鼠標修飾符用來限制處理程序監聽特定的滑鼠按鍵。常見的有:spa
.left
:鼠標左鍵.middle
:鼠標中間滾輪.right
:鼠標右鍵
修飾鍵
能夠用以下修飾符開啓鼠標或鍵盤事件監聽,使在按鍵按下時發生響應:
.ctrl
.alt
.shift
.meta
自定義按鍵修飾符別名
在Vue中能夠經過config.keyCodes
自定義按鍵修飾符別名。例如,因爲預先定義了keycode 116
(即F5
)的別名爲f5
,所以在文字輸入框中按下F5
,會觸發prompt
方法,出現alert
。
<!-- HTML --> <div id="app"> <input type="text" v-on:keydown.f5="prompt()"> </div> Vue.config.keyCodes.f5 = 116; let app = new Vue({ el: '#app', methods: { prompt: function() { alert('我是 F5!'); } } });
總結
在Vue中,使用v-on
來給元素綁定事件,而爲了更好的處理邏輯方面的事物,Vue提供了一個methods
。在methods
中定義一些方法,這些方法能夠幫助咱們處理一些邏輯方面的事情。而在這篇文章中,咱們主要介紹了一些事件的修飾符,好比常見的阻止事件冒泡,鍵盤修飾符等。除此以外,還提供了config.keyCodes
提供自定義按鍵修飾符別名。
轉自:https://www.w3cplus.com/vue/vue-methods-and-event-handling.html