vue2.0中事件修飾符的使用

事件處理

若是須要在內聯語句處理器中訪問原生DOM事件。可使用特殊變量$event,把它傳入到methods中的方法中。html

在Vue中,事件修飾符處理了許多DOM事件的細節,讓咱們再也不須要花大量的時間去處理這些煩惱的事情,而能有更多的精力專一於程序的邏輯處理。bash

在Vue中事件修飾符主要有:app

.stop:等同於JavaScript中的event.stopPropagation(),防止事件冒泡
.prevent:等同於JavaScript中的event.preventDefault(),防止執行預設的行爲(若是事件可取消,
則取消該事件,而不中止事件的進一步傳播)
.capture:與事件冒泡的方向相反,事件捕獲由外到內
.self:只會觸發本身範圍內的事件,不包含子元素
.once:只會觸發一次
複製代碼

.stop 防止事件冒泡

冒泡事件:嵌套兩三層父子關係,而後每層都有點擊事件,當點擊最內層的子節點,就會觸發從內至外子節點->父節點的點擊事件。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取消默認事件

.prevent等同於JavaScript的event.preventDefault(),用於取消默認事件。ui

默認事件指對DOM的操做會引發自動執行的動做,好比點擊超連接的時候會進行頁面的跳轉,點擊表單提交按鈕時會從新加載頁面等,使用".prevent"修飾符能夠阻止這些事件的發生。this

<a href="http://www.baidu.com" @click.prevent="doSomething"></a>
複製代碼

此時點擊超連接不會進行頁面的跳轉。spa

.capture 捕獲事件

捕獲冒泡,即有冒泡發生時,有該修飾符的dom元素會先執行,若是有多個,從外到內依次執行,而後再按天然順序執行觸發的事件。.net

此時點擊最內層div,結果以下:code

多個捕獲事件 :

點擊最內層結果:

. self:

將事件綁定到自身,只有自身才能觸發,一般用於避免冒泡事件的影響。

此時點擊最內層:

.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提供自定義按鍵修飾符別名。

轉自:

一、www.cnblogs.com/xuqp/p/9406…

二、blog.csdn.net/qq_29468573…

相關文章
相關標籤/搜索