Радиокнопки (radio buttons) — это элементы интерфейса, позволяющие пользователю выбрать один вариант из набора предустановленных значений. В Petite-Vue, как и в других библиотеках и фреймворках, они могут быть связаны с данными с помощью привязки значений, что позволяет эффективно управлять состоянием и реактивностью формы.
Для управления состоянием радиокнопок в Petite-Vue используется
директива v-model. Она связывает значение, выбранное
пользователем, с переменной в модели данных. Важной особенностью
является то, что при выборе одной радиокнопки из группы остальные будут
автоматически сбрасываться, так как группа радиокнопок работает как
взаимно исключающееся множество.
<div x-data="{ selected: 'option1' }">
<input type="radio" id="option1" x-model="selected" value="option1">
<label for="option1">Опция 1</label>
<input type="radio" id="option2" x-model="selected" value="option2">
<label for="option2">Опция 2</label>
<input type="radio" id="option3" x-model="selected" value="option3">
<label for="option3">Опция 3</label>
</div>
В примере выше переменная selected будет хранить
значение выбранной радиокнопки. При изменении выбора обновится значение
этой переменной.
x-modelДиректива x-model привязывает значение радиокнопки к
переменной, которая отслеживает состояние выбранной опции. Важным
моментом является то, что v-model автоматически обновляет
переменную, которая с ней связана, и наоборот.
При изменении значения переменной selected, радиокнопки
также изменят своё состояние, что позволяет синхронизировать данные с
интерфейсом.
Пример:
<div x-data="{ selected: 'option1' }">
<p>Выбрано: <span x-text="selected"></span></p>
<input type="radio" id="option1" x-model="selected" value="option1">
<label for="option1">Опция 1</label>
<input type="radio" id="option2" x-model="selected" value="option2">
<label for="option2">Опция 2</label>
<input type="radio" id="option3" x-model="selected" value="option3">
<label for="option3">Опция 3</label>
</div>
В этом примере, при выборе радиокнопки изменяется значение переменной
selected, которое отображается в параграфе. Это
демонстрирует двустороннюю привязку данных, обеспечиваемую директивой
x-model.
Иногда требуется изменить поведение радиокнопок в зависимости от
других состояний или событий. Petite-Vue предоставляет возможность
условной привязки значений с помощью директивы x-bind или
обработки событий через x-on.
Пример использования условной привязки для отключения радиокнопки:
<div x-data="{ isDisabled: false, selected: 'option1' }">
<input type="radio" id="option1" x-model="selected" value="option1">
<label for="option1">Опция 1</label>
<input type="radio" id="option2" x-model="selected" value="option2" x-bind:disabled="isDisabled">
<label for="option2">Опция 2</label>
<button x-on:click="isDisabled = !isDisabled">Переключить доступность</button>
</div>
Здесь радиокнопка с опцией “Опция 2” будет отключаться при изменении
переменной isDisabled. Кнопка позволяет переключать
состояние доступности кнопки, изменяя свойство isDisabled,
что демонстрирует гибкость работы с радиокнопками.
Радиокнопки могут использоваться в сложных формах, где необходимо взаимодействие между различными элементами. Например, можно использовать радиокнопки для переключения между разными частями формы.
<div x-data="{ selected: 'personal', showForm: 'personal' }">
<input type="radio" id="personal" x-model="selected" value="personal" x-on:change="showForm = 'personal'">
<label for="personal">Личные данные</label>
<input type="radio" id="address" x-model="selected" value="address" x-on:change="showForm = 'address'">
<label for="address">Адрес</label>
<div x-show="showForm === 'personal'">
<p>Форма для ввода личных данных...</p>
</div>
<div x-show="showForm === 'address'">
<p>Форма для ввода адреса...</p>
</div>
</div>
В этом примере радиокнопки переключают между двумя различными
формами. При изменении выбранной радиокнопки обновляется переменная
showForm, и на основе её значения показывается
соответствующая форма.
Для валидации радиокнопок и обработки ошибок можно использовать обычную проверку на наличие выбранного значения. Это полезно в формах, где требуется обязательный выбор одного из предложенных вариантов.
<div x-data="{ selected: '', error: '' }">
<input type="radio" id="option1" x-model="selected" value="option1">
<label for="option1">Опция 1</label>
<input type="radio" id="option2" x-model="selected" value="option2">
<label for="option2">Опция 2</label>
<button x-on:click="error = selected ? '' : 'Пожалуйста, выберите опцию'">Проверить</button>
<p x-show="error" style="color: red;" x-text="error"></p>
</div>
В этом примере кнопка проверяет, была ли выбрана радиокнопка. Если пользователь не выбрал ни одной опции, появляется сообщение об ошибке. Это показывает, как легко можно интегрировать логику валидации в компоненты с радиокнопками.
Радиокнопки в Petite-Vue являются мощным инструментом для создания
интерактивных форм, которые могут синхронизировать своё состояние с
данными с помощью x-model. Возможности условной привязки,
управления состоянием, а также интеграции с другими элементами
интерфейса позволяют строить гибкие и динамичные формы.