Що робить модифікатор у директиві?
Модифікатор у директиві - це суфікс після крапки (.), який уточнює або змінює поведінку директиви.
Він не змінює саму директиву, а додає їй додатковий функціонал.
Модифікатори є у вбудованих директив (v-on, v-bind, v-model) і можуть бути у кастомних директивах.
Як виглядає модифікатор?
javascript
v-on:click.prevent
v-model.lazy
v-bind:class.propМодифікатори завжди йдуть після директиви й параметра:
javascript
директива:параметр.модифікатор1.модифікатор2Приклади модифікаторів у стандартних директивах
v-on (обробники подій)
javascript
<button @click.stop="doSomething">Стоп спливання</button>
<button @click.prevent="submit">Скасувати поведінку браузера</button>
<button @click.once="init">Спрацює один раз</button>Основні модифікатори v-on:
.stop- викликаєevent.stopPropagation().prevent- викликаєevent.preventDefault().capture- слухати подію на фазі захоплення.self- спрацює лише якщо клік саме по елементу.once- обробник лише один раз.passive-passive: trueдля продуктивності
v-model
javascript
<input v-model.lazy="name">Модифікатори:
.lazy- оновлювати значення не наinput, а наchange.trim- автоматично обрізати пробіли.number- приводити до числа
v-bind
javascript
<div :class.prop="myClasses"></div>.prop- прив'язати як DOM-властивість, а не як атрибут.camel- перетворити ім'я атрибута на camelCase
Модифікатори в кастомних директивах
Ти можеш використовувати модифікатори і сам:
javascript
<div v-focus.delay="300"></div>Всередині директиви їх можна прочитати:
javascript
app.directive('focus', {
mounted(el, binding) {
if (binding.modifiers.delay) {
setTimeout(() => el.focus(), binding.value || 0);
} else {
el.focus();
}
}
});Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.