В библиотеке Quasar для JavaScript выбор строк
является одной из ключевых задач при построении интерфейсов с таблицами,
списками и формами. Основным компонентом для отображения табличных
данных является <q-table>, который
обладает встроенными механизмами управления выбором строк.
Для активации выбора строк в
<q-table> используется свойство
selection. Оно может принимать значения:
'single' — разрешает выбор только одной строки;'multiple' — разрешает множественный выбор;'none' — отключает выбор строк.Пример использования:
<q-table
:rows="users"
:columns="columns"
row-key="id"
selection="multiple"
v-model:selected="selectedRows"
/>
Здесь v-model:selected связывает выбранные строки с
локальной переменной selectedRows.
Выбор строк можно отслеживать и программно изменять через
selected и методы компонента:
toggleRowSelection(row) — переключает состояние
выбранной строки;clearSelection() — снимает выделение со всех
строк;selectAll() — выделяет все строки таблицы.Пример программного управления:
methods: {
selectFirstUser() {
this.$refs.myTable.toggleRowSelection(this.users[0])
},
clearAllSelections() {
this.$refs.myTable.clearSelection()
}
}
Важно: для корректной работы необходимо задать
ref="myTable" на компоненте
<q-table>.
Quasar автоматически добавляет чекбоксы для множественного выбора.
Для одиночного выбора можно использовать выделение строки при
клике с помощью свойства highlight:
<q-table
:rows="users"
:columns="columns"
row-key="id"
selection="single"
highlight
v-model:selected="selectedUser"
/>
highlight визуально выделяет выбранную строку и улучшает
UX при навигации по таблице.
Компонент <q-table> генерирует
события, которые позволяют реагировать на изменения выбора:
@selection="onSelection" — срабатывает при изменении
выделенных строк;@row-click="onRowClick" — реагирует на клики по
строкам;@row-dblclick="onRowDblClick" — реагирует на двойные
клики.Пример:
methods: {
onSelection(rows) {
console.log('Выбранные строки:', rows)
},
onRowClick(row) {
console.log('Клик по строке:', row)
}
}
<q-table
:rows="users"
:columns="columns"
row-key="id"
selection="multiple"
v-model:selected="selectedRows"
:selected.sync="visibleRows"
>
Выбор с пагинацией При разбиении на страницы
необходимо контролировать выбор глобально, так как по умолчанию
selected относится только к текущей странице.
Выбор с кастомными компонентами Можно
использовать слот body-cell для отображения кастомных
элементов с чекбоксами или переключателями. Это позволяет реализовать
нестандартное поведение выбора.
<q-table :rows="users" :columns="columns" row-key="id">
<template v-slot:body-cell-select="props">
<q-checkbox
v-model="props.selected"
@update:model-value="props.toggleSelection"
/>
</template>
</q-table>
Quasar предоставляет возможность настраивать классы выбранных строк
через слот row-class:
<q-table
:rows="users"
:columns="columns"
row-key="id"
selection="multiple"
:row-class="rowClass"
>
</q-table>
methods: {
rowClass(row) {
return this.selectedRows.includes(row) ? 'bg-blue-2 text-white' : ''
}
}
Так можно визуально выделять строки цветом или изменять шрифты в зависимости от состояния выбора.
Выбор строк в Quasar реализован гибко: компоненты
предоставляют управление через свойства, методы и события, позволяют
работать с одиночным и множественным выбором, интегрируются с
фильтрацией, пагинацией и кастомными слотами. Продуманная архитектура
<q-table> позволяет легко
комбинировать визуальные и программные подходы к выбору строк,
обеспечивая интерактивность и удобство работы с данными.