Vue事件修飾符的使用

事件處理
.stop:等同于JavaScript中的event.stopPropagation(),防止事件冒泡 .prevent:等同于JavaScript中的event.preventDefault(),防止執(zhí)行預(yù)設(shè)的行為(如果事件可取消,則取消該事件,而不停止事件的進一步傳播) .capture:與事件冒泡的方向相反,事件捕獲由外到內(nèi) .self:只會觸發(fā)自己范圍內(nèi)的事件,不包含子元素 .once:只會觸發(fā)一次
.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相當于在每個方法中調(diào)用了等同于event.stopPropagation(),點擊子節(jié)點不會捕獲到父節(jié)點的事件
<!-- 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="#">標簽,當用戶點擊時,通常在瀏覽器的網(wǎng)址列出#:
.capture 捕獲事件
捕獲事件:嵌套兩三層父子關(guān)系,然后所有都有點擊事件,點擊子節(jié)點,就會觸發(fā)從外至內(nèi) 父節(jié)點-》子節(jié)點的點擊事件
<!-- 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只會觸發(fā)自己范圍內(nèi)的事件,不會包含子元素。
<!-- 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 只執(zhí)行一次點擊
如果我們在@click事件上添加.once修飾符,只要點擊按鈕只會執(zhí)行一次。
鍵盤修飾符
在JavaScript事件中除了前面所說的事件,還有鍵盤事件,也經(jīng)常需要監(jiān)測常見的鍵值。在Vue中允許v-on在監(jiān)聽鍵盤事件時添加關(guān)鍵修飾符。記住所有的keyCode比較困難,所以Vue為最常用的鍵盤事件提供了別名:
.enter:回車鍵
.tab:制表鍵
.delete:含delete和backspace鍵
.esc:返回鍵
.space: 空格鍵
.up:向上鍵
.down:向下鍵
.left:向左鍵
.right:向右鍵
鼠標修飾符
鼠標修飾符用來限制處理程序監(jiān)聽特定的滑鼠按鍵。常見的有:
.left:鼠標左鍵
.middle:鼠標中間滾輪
.right:鼠標右鍵
修飾鍵
可以用如下修飾符開啟鼠標或鍵盤事件監(jiān)聽,使在按鍵按下時發(fā)生響應(yīng):
.ctrl
.alt
.shift
.meta
自定義按鍵修飾符別名
在Vue中可以通過config.keyCodes自定義按鍵修飾符別名。例如,由于預(yù)先定義了keycode 116(即F5)的別名為f5,因此在文字輸入框中按下F5,會觸發(fā)prompt方法,出現(xiàn)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!');}}});
總結(jié)
在Vue中,使用v-on來給元素綁定事件,而為了更好的處理邏輯方面的事物,Vue提供了一個methods。在methods中定義一些方法,這些方法可以幫助我們處理一些邏輯方面的事情。
而在這篇文章中,我們主要介紹了一些事件的修飾符,比如常見的阻止事件冒泡,鍵盤修飾符等。除此之外,還提供了config.keyCodes提供自定義按鍵修飾符別名。
感謝你的閱讀。
學習更多技能
請點擊下方公眾號
![]()

