Vue предоставляет мощную систему модификаторов событий, которые позволяют решать распространенные задачи обработки событий декларативным способом прямо в шаблоне. Рассмотрим все виды модификаторов.
<!-- Прекращает всплытие события -->
<a @click.stop="handleClick">Stop Propagation</a>
<!-- Отменяет действие по умолчанию -->
<form @submit.prevent="onSubmit">Prevent Default</form>
<!-- Комбинация модификаторов -->
<form @submit.stop.prevent="onSubmit">Stop + Prevent</form>
<!-- Событие сработает только один раз -->
<button @click.once="handleOnceClick">Once</button>
<!-- Режим обработки события на фазе capture -->
<div @click.capture="handleCaptureClick">Capture</div>
<!-- Срабатывает только если event.target - сам элемент -->
<div @click.self="handleSelfClick">Self</div>
<!-- Passive mode для touch/wheel событий -->
<div @touchmove.passive="onTouchMove">Passive</div>
<input @keyup.enter="submit" />
<input @keyup.13="submit" /> <!-- Альтернатива через код -->
<input @keyup.ctrl="onCtrlUp" />
<input @keyup.alt="onAltUp" />
<input @keyup.shift="onShiftUp" />
<input @keyup.meta="onMetaUp" /> <!-- cmd на Mac -->
<input @keyup.ctrl.enter="onCtrlEnter" />
<input @keyup.exact="onExact" /> <!-- Только эта клавиша -->
<input @keyup.esc="cancel" />
<input @keyup.space="playPause" />
<input @keyup.tab="nextField" />
<input @keyup.delete="removeItem" />
<button @click.left="leftClick">Левая кнопка (по умолчанию)</button>
<button @click.middle="middleClick">Средняя кнопка</button>
<button @click.right="rightClick">Правая кнопка</button>
Для полей ввода:
<input v-model.lazy="msg" /> <!-- Обновляет после change -->
<input v-model.number="age" /> <!-- Приводит к числу -->
<input v-model.trim="name" /> <!-- Удаляет пробелы -->
Вы можете создавать собственные модификаторы через глобальные конфигурации:
Vue.config.keyCodes = {
f1: 112,
up: [38, 87] // w или стрелка вверх
}
<input @keyup.f1="help" />
<input @keyup.up="moveUp" />
Модификаторы можно комбинировать:
<button @click.stop.prevent.self="doThat"></button>
<!-- Порядок имеет значение! -->
Vue предоставляет следующие группы модификаторов:
✔ Базовые: .stop, .prevent, .capture, .self, .once, .passive
✔ Клавиатурные: .enter, .tab, .esc, .space, .up, .down и др.
✔ Системные: .ctrl, .alt, .shift, .meta
✔ Мыши: .left, .right, .middle
✔ v-model: .lazy, .number, .trim
✔ Кастомные: можно определить свои
Правила использования:
Модификаторы событий — мощный инструмент Vue, позволяющий сохранять шаблоны чистыми и лаконичными, вынося общую логику обработки событий в декларативные конструкции.