若是須要在內聯語句處理器中訪問原生DOM事件。可使用特殊變量$event,把它傳入到methods中的方法中。html
在Vue中,事件修飾符處理了許多DOM事件的細節,讓咱們再也不須要花大量的時間去處理這些煩惱的事情,而能有更多的精力專一於程序的邏輯處理。bash
在Vue中事件修飾符主要有:app
.stop:等同於JavaScript中的event.stopPropagation(),防止事件冒泡
.prevent:等同於JavaScript中的event.preventDefault(),防止執行預設的行爲(若是事件可取消,
則取消該事件,而不中止事件的進一步傳播)
.capture:與事件冒泡的方向相反,事件捕獲由外到內
.self:只會觸發本身範圍內的事件,不包含子元素
.once:只會觸發一次
複製代碼
冒泡事件:嵌套兩三層父子關係,而後每層都有點擊事件,當點擊最內層的子節點,就會觸發從內至外子節點->父節點
的點擊事件。dom
<!-- 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(),點擊子節點不會捕獲到父節點的事件。測試
<!-- 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等同於JavaScript的event.preventDefault(),用於取消默認事件。ui
默認事件指對DOM的操做會引發自動執行的動做,好比點擊超連接的時候會進行頁面的跳轉,點擊表單提交按鈕時會從新加載頁面等,使用".prevent"修飾符能夠阻止這些事件的發生。this
<a href="http://www.baidu.com" @click.prevent="doSomething"></a>
複製代碼
此時點擊超連接不會進行頁面的跳轉。spa
捕獲冒泡,即有冒泡發生時,有該修飾符的dom元素會先執行,若是有多個,從外到內依次執行,而後再按天然順序執行觸發的事件。.net
此時點擊最內層div,結果以下:code
多個捕獲事件 :
點擊最內層結果:
將事件綁定到自身,只有自身才能觸發,一般用於避免冒泡事件的影響。
此時點擊最內層:
若是咱們在@click事件上添加.once修飾符,只要點擊按鈕只會執行一次。
在JavaScript事件中除了前面所說的事件,還有鍵盤事件,也常常須要監測常見的鍵值。
在Vue中容許v-on在監聽鍵盤事件時添加關鍵修飾符。
記住全部的keyCode比較困難,因此Vue爲最經常使用的鍵盤事件提供了別名:
.enter:回車鍵
.tab:製表鍵
.delete:含delete和backspace鍵
.esc:返回鍵
.space: 空格鍵
.up:向上鍵
.down:向下鍵
.left:向左鍵
.right:向右鍵
複製代碼
鼠標修飾符用來限制處理程序監聽特定的滑鼠按鍵。常見的有:
.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提供自定義按鍵修飾符別名。
轉自: