Vue 事件修饰符
前言
事件修饰符是比 event.preventDefault()
或 event.stopPropagation()
更“好”的写法,事件修饰符能够更轻松的实现前面两种方法的功能。事件修饰符能够让我们只需考虑纯粹的数据逻辑,而不是去处理 DOM 事件细节。
事件修饰符们
stop
<!-- 阻止单击事件继续传播 -->
<a v-on:click.stop="doThis"></a>
prevent
<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>
capture
<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a>
self
<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>
once
<!-- 添加事件监听器时使用事件捕获模式 -->
<!-- 即内部元素触发的事件先在此处理,然后才交由内部元素进行处理 -->
<div v-on:click.capture="doThis">...</div>
passive
<!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
<!-- 即事件不是从内部元素触发的 -->
<div v-on:click.self="doThat">...</div>
顺序
使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。因此,用 v-on:click.prevent.self
会阻止所有的点击,而 v-on:click.self.prevent
只会阻止对元素自身的点击。
绑定空函数
有时候我们只需要禁止事件的触发(或冒泡),那么可以给事件监听绑定一个空的函数。如:
<view class="mask" @touchmove.stop.prevent></view>