В Quasar Framework компоненты QList и QItem представляют собой ключевой инструмент для построения интерактивных списков в приложениях на Vue.js. Они обеспечивают удобное отображение элементов с возможностью кастомизации внешнего вида, добавления иконок, действий и управления событиями.
QList используется как контейнер для списка элементов. Основные особенности:
separator.color,
dense, bordered).Пример базового QList:
<template>
<q-list bordered>
<q-item clickable v-ripple>
<q-item-section>
<q-item-label>Элемент 1</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-ripple>
<q-item-section>
<q-item-label>Элемент 2</q-item-label>
</q-item-section>
</q-item>
</q-list>
</template>
Ключевые моменты:
clickable делает элемент интерактивным,
реагирующим на клики.v-ripple добавляет эффект волны при
нажатии.QItem представляет собой отдельный элемент списка. Основные возможности:
QItemSection.QItemSection с
атрибутом side можно размещать иконки слева или
справа.Пример с иконками и дополнительным текстом:
<template>
<q-list bordered>
<q-item clickable v-ripple>
<q-item-section side>
<q-icon name="mail" />
</q-item-section>
<q-item-section>
<q-item-label>Почта</q-item-label>
<q-item-label caption>Новые сообщения</q-item-label>
</q-item-section>
<q-item-section side>
<q-badge color="red" floating label="3" />
</q-item-section>
</q-item>
</q-list>
</template>
Особенности структуры QItem:
default): содержит
основной текст через QItemLabel.side): для иконок,
счетчиков, действий.QList и QItem отлично подходят для рендеринга списков из массивов
данных. Используется стандартный цикл v-for:
<template>
<q-list bordered>
<q-item v-for="user in users" :key="user.id" clickable v-ripple>
<q-item-section>
<q-item-label>{{ user.name }}</q-item-label>
<q-item-label caption>{{ user.email }}</q-item-label>
</q-item-section>
<q-item-section side>
<q-icon name="person" />
</q-item-section>
</q-item>
</q-list>
</template>
<script>
export default {
data() {
return {
users: [
{ id: 1, name: 'Алексей', email: 'alex@example.com' },
{ id: 2, name: 'Мария', email: 'maria@example.com' },
],
};
},
};
</script>
Преимущества динамического подхода:
QItem поддерживает множество стилей и режимов отображения:
single-line, two-line,
three-line).Пример с активным и плотным элементом:
<q-list>
<q-item clickable v-ripple dense active>
<q-item-section>
<q-item-label>Выбранный элемент</q-item-label>
<q-item-label caption>Описание</q-item-label>
</q-item-section>
</q-item>
</q-list>
QItem позволяет отслеживать события:
@click – одиночное нажатие.@dblclick – двойное нажатие.@mouseenter / @mouseleave – события
наведения.Пример обработки клика:
<q-item clickable v-ripple @click="onItemClick(user)">
<q-item-section>
<q-item-label>{{ user.name }}</q-item-label>
</q-item-section>
</q-item>
<script>
export default {
methods: {
onItemClick(user) {
console.log('Выбран пользователь:', user.name);
},
},
};
</script>
QList поддерживает вложенные QItem для создания иерархии:
<q-list bordered>
<q-item clickable v-ripple>
<q-item-section>
<q-item-label>Категория 1</q-item-label>
</q-item-section>
</q-item>
<q-list padding>
<q-item clickable v-ripple>
<q-item-section>
<q-item-label>Подэлемент 1.1</q-item-label>
</q-item-section>
</q-item>
</q-list>
</q-list>
padding у вложенного списка добавляет
отступ.Для реализации свайпов и действий с элементами можно комбинировать QItem с QSlideItem:
<q-slide-item @left="deleteItem(user)" @right="editItem(user)">
<q-item clickable v-ripple>
<q-item-section>
<q-item-label>{{ user.name }}</q-item-label>
</q-item-section>
</q-item>
</q-slide-item>
deleteItem и
editItem.QList и QItem в Quasar создают мощный, гибкий и настраиваемый инструмент для любых списков — от простых меню до сложных интерактивных интерфейсов с вложенными элементами, динамическими данными и кастомными действиями.