QCheckbox — это компонент библиотеки Quasar, предназначенный для создания чекбоксов с полной интеграцией в реактивную модель Vue.js. Он позволяет связывать состояние с переменной, управлять внешним видом, обрабатывать события и интегрироваться с формами.
Основное свойство для работы с состоянием чекбокса —
v-model. Оно связывает переменную с состоянием галочки:
<template>
<q-checkbox v-model="checked" label="Выбрать опцию"></q-checkbox>
</template>
<script>
export default {
data() {
return {
checked: false
};
}
};
</script>
checked принимает булево значение
(true/false) для одиночного чекбокса.<q-checkbox v-model="selectedOptions" val="option1" label="Опция 1"></q-checkbox>
<q-checkbox v-model="selectedOptions" val="option2" label="Опция 2"></q-checkbox>
<script>
export default {
data() {
return {
selectedOptions: []
};
}
};
</script>
QCheckbox поддерживает множество визуальных модификаторов:
color — задаёт цвет галочки и рамки при активном
состоянии.dense — уменьшенный размер для компактного
интерфейса.disable — делает чекбокс неактивным.keep-color — сохраняет цвет при отключении.<q-checkbox v-model="checked" label="Активная опция" color="primary" dense></q-checkbox>
<q-checkbox v-model="checked" label="Неактивная опция" disable></q-checkbox>
@update:model-value — срабатывает при изменении
состояния чекбокса.@input — событие ввода, аналогично v-model
для двусторонней привязки.<q-checkbox
v-model="checked"
label="Отслеживание события"
@update:model-value="onChange"
/>
<script>
export default {
data() {
return { checked: false };
},
methods: {
onChange(val) {
console.log('Состояние чекбокса:', val);
}
}
};
</script>
QRadio используется для выбора одного варианта из группы. Он полностью совместим с реактивной системой Vue и позволяет создавать управляемые формы.
Для радиокнопок v-model связывается с переменной,
принимающей значение выбранного элемента:
<q-radio v-model="selectedOption" val="1" label="Вариант 1"></q-radio>
<q-radio v-model="selectedOption" val="2" label="Вариант 2"></q-radio>
<script>
export default {
data() {
return { selectedOption: null };
}
};
</script>
val определяет значение, которое будет присвоено
переменной при выборе конкретного радио.v-model, образуют
группу выбора.color — основной цвет при активном выборе.disable — блокировка выбора.dense — уменьшенная компактная версия.<q-radio v-model="selectedOption" val="1" label="Первый" color="secondary" dense></q-radio>
<q-radio v-model="selectedOption" val="2" label="Второй" disable></q-radio>
Оба компонента QCheckbox и QRadio интегрируются с QForm для валидации:
<q-form @submit.prevent="submitForm">
<q-checkbox v-model="agree" label="Согласен с условиями" :rules="[val => !!val || 'Обязательное поле']"></q-checkbox>
<q-radio v-model="gender" val="male" label="Мужской" :rules="[val => !!val || 'Выберите пол']"></q-radio>
<q-btn type="submit" label="Отправить"></q-btn>
</q-form>
<script>
export default {
data() {
return { agree: false, gender: null };
},
methods: {
submitForm() {
console.log('Состояние формы:', this.agree, this.gender);
}
}
};
</script>
rules позволяет задавать проверку на уровне
компонента.val.prepend и append для кастомных иконок и
контента.@click для кастомной логики при выборе.<q-checkbox
v-for="item in items"
:key="item.id"
v-model="selectedItems"
:val="item.id"
:label="item.name"
></q-checkbox>
<script>
export default {
data() {
return {
items: [
{ id: 1, name: 'Опция A' },
{ id: 2, name: 'Опция B' }
],
selectedItems: []
};
}
};
</script>
Эти компоненты образуют основу интерактивных форм Quasar. Правильное
использование v-model, val, визуальных
модификаторов и слотов позволяет создавать гибкие и управляемые
интерфейсы с минимальным количеством кода и полной интеграцией с
реактивной системой Vue.