Повна форма директиви: v-назва:аргумент.модифікатор="значення". Наприклад, v-bind:href="url", v-on:submit.prevent="save".
Динамічний аргумент - назва атрибута чи події з виразу в квадратних дужках:
<a :[attributeName]="url">...</a>
<button @[eventName]="handler">...</button>
Якщо attributeName = 'href', це те саме, що :href="url". Значення null прибирає прив'язку.
Обмеження динамічних аргументів:
- вираз має давати рядок або
null; - без пробілів і лапок усередині дужок:
:['data-' + key]- синтаксична помилка. Складні назви обчислюють уcomputed; - у шаблонах прямо в HTML-сторінці (не в
.vue-файлах) браузер переводить атрибути в нижній регістр::[someAttr]стане:[someattr]і не знайде змінну.
Прив'язка об'єкта атрибутів - v-bind без аргументу:
<input v-bind="{ id: 'email', type: 'email', required: true }">
<BaseInput v-bind="field" /> <!-- розгорнути об'єкт у props/атрибути -->
Скорочення з однаковою назвою (Vue 3.4+): якщо атрибут і змінна називаються однаково, значення можна опустити:
<img :src :alt> <!-- те саме, що :src="src" :alt="alt" -->
<UserCard :user :role />
Kebab-case атрибут шукає camelCase змінну: :data-id → dataId.
Логічні атрибути: :disabled="isSaving" - атрибут з'являється при істинному значенні й зникає при хибному (false, null, undefined). Порожній рядок '' для логічних атрибутів вважається істинним, як у HTML.
Модифікатори v-bind:
.prop- встановити як властивість DOM, а не атрибут (:value.prop, скорочено.value);.attr- навпаки, примусово як атрибут (:width.attr, скорочено^width);.camel- перетворити kebab-case на camelCase (для атрибутів SVG на кшталтviewBoxу HTML-шаблонах).
Чому це корисно на практиці: спільні компоненти-обгортки (поле форми, кнопка-посилання), що приймають набір атрибутів ззовні, і генерація форм з конфігурації, де назви полів і подій приходять з даних.