Чекбоксы являются стандартным элементом формы, который позволяет пользователю выбирать одно или несколько значений из списка. Petite-Vue обеспечивает реактивное связывание состояния чекбоксов с данными, упрощая управление пользовательским вводом и взаимодействие с логикой приложения.
Для одиночного чекбокса ключевым моментом является двусторонняя
привязка значения. В Petite-Vue это достигается с помощью директивы
v-model. Пример:
<div v-scope="{ accepted: false }">
<input type="checkbox" v-model="accepted">
Принять условия
<p>Статус: {{ accepted ? 'Принято' : 'Не принято' }}</p>
</div>
v-model автоматически синхронизирует
свойство accepted с состоянием чекбокса.{{ accepted }}.Можно задать начальное значение true, чтобы чекбокс был
отмечен по умолчанию:
v-scope="{ accepted: true }"
Когда необходимо выбрать несколько значений, используется массив. Каждое значение чекбокса добавляется или удаляется из массива в зависимости от состояния. Пример:
<div v-scope="{ selectedFruits: [] }">
<label><input type="checkbox" value="apple" v-model="selectedFruits"> Яблоко</label>
<label><input type="checkbox" value="banana" v-model="selectedFruits"> Банан</label>
<label><input type="checkbox" value="orange" v-model="selectedFruits"> Апельсин</label>
<p>Выбрано: {{ selectedFruits.join(', ') }}</p>
</div>
selectedFruits.Чекбоксы можно генерировать на основе массива данных с использованием
v-for:
<div v-scope="{ options: ['Красный', 'Зелёный', 'Синий'], chosen: [] }">
<label v-for="color in options" :key="color">
<input type="checkbox" :value="color" v-model="chosen">
{{ color }}
</label>
<p>Выбрано цветов: {{ chosen.join(', ') }}</p>
</div>
:value задаёт уникальное значение для каждого
чекбокса.chosen автоматически обновляется при
изменении состояния чекбоксов.Помимо прямого использования v-model, состояние
чекбоксов можно изменять программно через методы в объекте
v-scope. Пример:
<div v-scope="{
selected: [],
toggleAll() { this.selected = this.selected.length ? [] : ['a', 'b', 'c'] }
}">
<label><input type="checkbox" value="a" v-model="selected"> A</label>
<label><input type="checkbox" value="b" v-model="selected"> B</label>
<label><input type="checkbox" value="c" v-model="selected"> C</label>
<button @click="toggleAll()">Переключить все</button>
<p>Выбрано: {{ selected.join(', ') }}</p>
</div>
toggleAll проверяет текущий массив и либо очищает
его, либо устанавливает все значения.indeterminateДля чекбоксов с промежуточным состоянием (indeterminate)
Petite-Vue позволяет программно управлять этим состоянием:
<div v-scope="{ partial: true, checked: false }">
<input type="checkbox" :indeterminate="partial" v-model="checked">
Промежуточный выбор
</div>
indeterminate не меняет значение
checked, но визуально показывает промежуточное
состояние.Можно использовать реактивные вычисления для динамического реагирования на состояние чекбоксов:
<div v-scope="{ fruits: ['apple', 'banana'], selected: [] }">
<label v-for="fruit in fruits" :key="fruit">
<input type="checkbox" :value="fruit" v-model="selected"> {{ fruit }}
</label>
<p>Количество выбранных: {{ selected.length }}</p>
</div>
selected.length автоматически обновляется при изменении
состояния чекбоксов.v-model для автоматической синхронизации
состояния.value для
каждого чекбокса.v-for.indeterminate подходит для частичных
выборов.Эти приёмы позволяют создавать гибкие формы и элементы интерфейса, полностью используя реактивность Petite-Vue.