使用Vuetify的v-data-table组件,可以通过设置expand属性来实现折叠/展开单个组。
具体步骤如下:
下面是一个示例代码:
<template>
<v-data-table
:headers="headers"
:items="groups"
item-key="id"
show-expand
:expanded.sync="expandedGroups"
>
<template v-slot:expanded-item="{ item }">
<v-data-table
:headers="subHeaders"
:items="item.subItems"
item-key="subId"
></v-data-table>
</template>
<template v-slot:item.actions="{ item }">
<v-icon
@click="toggleExpand(item)"
:class="{ 'rotate-180': expandedGroups.includes(item.id) }"
>
mdi-chevron-down
</v-icon>
</template>
</v-data-table>
</template>
<script>
export default {
data() {
return {
headers: [
{ text: 'Group Name', value: 'name' },
{ text: 'Actions', value: 'actions', sortable: false },
],
subHeaders: [
{ text: 'Sub Item Name', value: 'subName' },
// Add more sub headers if needed
],
groups: [
{
id: 1,
name: 'Group 1',
expanded: false,
subItems: [
{ subId: 1, subName: 'Sub Item 1' },
{ subId: 2, subName: 'Sub Item 2' },
],
},
// Add more groups if needed
],
expandedGroups: [],
};
},
methods: {
toggleExpand(item) {
if (this.expandedGroups.includes(item.id)) {
this.expandedGroups = this.expandedGroups.filter(
(groupId) => groupId !== item.id
);
} else {
this.expandedGroups.push(item.id);
}
},
},
};
</script>
在上述示例中,v-data-table组件用于显示组的列表,每个组都有一个展开按钮,点击按钮可以切换该组的展开状态。展开状态通过expandedGroups数组来管理,其中包含已展开的组的id。展开内容使用v-slot:expanded-item来定义,其中嵌套了另一个v-data-table组件来显示该组的详细数据。
请注意,上述示例中的代码仅为示范,实际应用中可能需要根据具体需求进行适当的修改和扩展。
推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云对象存储(COS)。
领取专属 10元无门槛券
手把手带您无忧上云