一、事件处理方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| <div id="example-2"> <button v-on:click="greet">Greet</button> </div>
<script> var example2 = new Vue({ el: '#example-2', data: { name: 'Vue.js' }, methods: { greet: function (event) { alert('Hello ' + this.name + '!') if (event) { alert(event.target.tagName) } } } })
example2.greet() </script>
|
二、内联处理器的方法
1 2 3
| <div id="example-3"> <button v-on:click="say('hi')">Say hi</button> </div>
|
三、事件修饰符
在事件处理程序中调用 event.preventDefault()
或 event.stopPropagation()
是非常常见的需求。尽管我们可以在方法中轻松实现这点,但更好的方式是:方法只有纯粹的数据逻辑,而不是去处理 DOM 事件细节。
为了解决这个问题,Vue为 v-on 提供了事件修饰符。修饰符是由点开头的指令后缀来表示的。
- .stop
- .prevent
- .capture
- .self
- .once
- .passive
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <a v-on:click.stop="doThis"></a>
<form v-on:submit.prevent="onSubmit"></form>
<a v-on:click.stop.prevent="doThat"></a>
<form v-on:submit.prevent></form>
<div v-on:click.capture="doThis">...</div>
<div v-on:click.self="doThat">...</div>
|
使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。
因此,用 v-on:click.prevent.self 会阻止所有的点击,而 v-on:click.self.prevent 只会阻止对元素自身的点击。
1 2 3 4 5 6 7 8 9
| <!-- 2.1.4 新增 --> <!-- 点击事件将只会触发一次 --> <a v-on:click.once="doThis"></a>
<!-- 2.3.0 新增 --> <!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发 --> <!-- 而不会等待 `onScroll` 完成 --> <!-- 这其中包含 `event.preventDefault()` 的情况 --> <div v-on:scroll.passive="onScroll">...</div>
|
1 2 3 4 5
|
<div v-on:scroll.passive="onScroll">...</div>
|
这个 .passive 修饰符尤其能够提升移动端的性能。
注意: 不要把 .passive 和 .prevent一起使用,因为 .prevent 将会被忽略,同时浏览器可能会向你展示一个警告。请记住,.passive 会告诉浏览器你不想阻止事件的默认行为。
按键修饰符
1 2
| <input v-on:keyup.enter="submit">
|
略》。。。。