v-on 事件指令用于綁定事件。
1 基礎用法
v-on 指令綁定事件后,就會監(jiān)聽相應的事件数尿。
html:
<div id="app">
<h3>已點擊 {{count}} 次</h3>
<button @click="count++">點我</button>
</div>
注意: @click
是 v-on:click
的簡寫形式庆捺, @
即表示 v-on:
古今。
js:
<script>
var app = new Vue({
el: '#app',
data: {
count:0
}
});
</script>
效果:
@click 表達式即可以直接使用 js 語句,也可以是一個定義在 vue 實例中 methods 內(nèi)的函數(shù)名滔以。
html:
<button @click="quickAdd(3)">快速增長</button>
js:
methods: {
quickAdd: function (i) {
i = i || 1;//為避免參數(shù)為 null 或 undefined 值捉腥,這里設定了默認值 1
this.count += i;
}
}
效果:
注意: @click
調(diào)用的方法名如果不需要參數(shù),那么可以不寫括號你画。
使用 Vue.js 的一個好處是:當銷毀 ViewModel 時抵碟,會自動銷毀所有綁定在其上的事件處理器。
2 調(diào)用 DOM 事件
Vue.js 還提供了一個 $event
變量坏匪,使用它可以訪問原生 DOM 事件拟逮。$event
變量可以通過方法傳入。
html:
<div id="app2">
<a href="www.163.com" @click="openUrl('被禁用咯',$event)">被禁用咯</a>
</div>
js:
var app2 = new Vue({
el: '#app2',
data: {
count: 0
},
methods: {
openUrl: function (param, event) {
event.preventDefault();
console.log("param:" + param);
}
}
});
輸出結果:
param:被禁用咯
這個示例利用傳入的 event 參數(shù)适滓,禁用了原有的鏈接跳轉(zhuǎn)邏輯敦迄。
3 事件修飾符
Vue.js 支持以下事件修飾符:
事件修飾符 | 示例 | 示例說明 |
---|---|---|
.stop |
@click.stop |
阻止單擊事件冒泡。 |
.prevent |
@submit.prevent |
提交頁面不再重載頁面凭迹。 |
.capture |
@click.capture |
添加事件監(jiān)聽器時使用事件捕獲模式颅崩。 |
.self |
@click.self |
只有當單擊事件是元素的自身事件時,才會觸發(fā)蕊苗。 |
.once |
@click.once |
只觸發(fā)一次沿后。 |
4 按鍵修飾符
可以使用按鍵修飾符,來監(jiān)聽表單元素上的鍵盤事件朽砰。
html:
<div id="app3">
<input @keyup.13="enterClick">
</div>
js:
var app3 = new Vue({
el: '#app3',
data: {},
methods: {
enterClick: function () {
console.log("enterClick");
}
}
});
輸出結果:
enterClick
這個示例演示了如何通過回車按鍵修飾符來綁定事件函數(shù)的過程尖滚。
除了使用 keycode 來指定按鍵之外,我們還可以使用以下這些按鍵別名:
.enter
.tab
.delete
.esc
.space
.up
.down
.left
.right
還有一些按鍵修飾符可以組合使用瞧柔,或者和鼠標一起使用:
.ctrl
.alt
.shift
-
.meta
:Mac 下為 Command 鍵漆弄,Windows 下為窗口鍵。
html:
<div id="app4">
<input @keyup.alt.83="save">
</div>
js:
var app4 = new Vue({
el: '#app4',
data: {},
methods: {
save: function () {
console.log("save");
}
}
});
輸出結果:
save
這個示例造锅,我們通過組合按鍵修飾符撼唾,為輸入框綁定了 alt + S 事件。
本文示例(DEMO)