在处理事件时调用
event.preventDefault()或event.stopPropagation()是很常见的。尽管我们可以直接在方法内调用,但如果方法能更专注于数据逻辑而不用去处理 DOM 事件的细节会更好。
表单修饰符
- lazy(当光标离开标签时,才会将值赋值给value)
- trim(过滤掉两边的空格)
- number(自动将用户的输入值转为数值类型,但如果这个值无法被parseFloat解析,则会返回原来的值)
<input v-model.lazy="msg" />
<input v-model.number="age" />
<input v-model.trim="msg" />
事件修饰符
.stop.prevent.self.capture.once.passive
<!-- stop事件将停止传递 -->
<a @click.stop="isThis"></a>
<!-- prevent事件将不再重新加载页面 -->
<form @submit.prevent="onSubmit"></form>
<!-- 修饰语可以使用链式书写 -->
<a @click.stop.prevent="doThat"></a>
<!-- 也可以只有修饰符 -->
<form @submit.prevent></form>
<!-- 添加事件监听器时,使用 `capture` 捕获模式 -->
<!-- 例如:指向内部元素的事件,在被内部元素处理前,先被外部处理 -->
<div @click.capture="doThis">...</div>
<!-- 点击事件最多被触发一次 -->
<button @click.once="doThis"></button>
<!-- 滚动事件的默认行为 (scrolling) 将立即发生而非等待 `onScroll` 完成 -->
<!-- 以防其中包含 `event.preventDefault()` -->
<div @scroll.passive="onScroll">...</div>
按键修饰符
- enter
<!-- 仅在 `key` 为 `Enter` 时调用 `submit` -->
<input @keyup.enter="submit" />
按键别名
.enter.tab.delete(捕获“Delete”和“Backspace”两个按键).esc.space.up.down.left.right
鼠标按键修饰符
.left.right.middle