事件處理
如果需要在內聯語句處理器中訪問原生DOM事件。可以使用特殊變量$event,把它傳入到methods中的方法中。
在Vue中,事件修飾符處理了許多DOM事件的細節,讓我們不再需要花大量的時間去處理這些煩惱的事情,而能有更多的精力專注於程序的邏輯處理。在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(),點擊子節點不會捕獲到父節點的事件
<!-- 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="#">標簽,當用戶點擊時,通常在瀏覽器的網址列出#:
.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修飾符,只要點擊按鈕只會執行一次。
鍵盤修飾符
在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提供自定義按鍵修飾符別名。
轉自:https://www.w3cplus.com/vue/vue-methods-and-event-handling.html
