就像标题所说的那样,我正在尝试拥有一个导航抽屉,该抽屉具有针对某些选项的可扩展子菜单。就像“用户配置文件”主菜单选项可能有一个子菜单“更新联系方式”和“审查注册”。
我已经尝试了几种方法,基本上归结为相同的两个问题。因为每个菜单选项都是一个列表块,所以要么子菜单堆叠在它的右侧(例如,整个子菜单在同一个块中),要么整个菜单选项列表都有这些下拉图标,当只有一个菜单选项实际上有一个子菜单时。此外,我下面的第二个代码片段也会阻止您导航到任何主菜单链接,这不是我们想要的。
示例 1,其中子菜单与主菜单选项卡在同一磁贴中。
<div v-for="(link, i) in links" :key="i">
<v-list-tile v-if="!link.subLinks" :to="link.to" :active-class="color" avatar class="v-list-item">
<v-list-tile-action>
<v-icon>{{ link.icon }}</v-icon>
</v-list-tile-action>
<v-list-tile-title v-text="link.text"/>
</v-list-tile>
<div v-else>
<v-list-tile avatar class="v-list-item">
<v-list-tile-action>
<v-icon>{{ link.icon }}</v-icon>
</v-list-tile-action>
<v-list-tile-title v-text="link.text"/>
<v-list-group>
<v-list-tile sub-group v-for="(subLink, j) in link.subLinks" :key="j" :to="subLink.to" :active-class="color" avatar class="v-list-item">
<v-list-tile-title v-text="subLink.text"/>
</v-list-tile>
</v-list-group>
</v-list-tile>
</div>
</div>
示例 2,其中每个菜单选项都有一个下拉箭头,即使是没有任何子菜单的菜单选项也是如此。
<v-list-group v-for="(link, i) in links" :key="i" :prepend-icon="link.icon" :to="link.to" :active-class="color" avatar class="v-list-item">
<template v-slot:activator>
<v-list-tile>
<v-list-tile-title>{{ link.text }}</v-list-tile-title>
</v-list-tile>
</template>
<v-list-tile v-for="(subLink, j) in link.subLinks" :key="j" :to="subLink.to" :active-class="color">
<v-list-tile-content>
<v-list-tile-title>{{ subLink.text }}</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
</v-list-group>
这是我正在使用的数据示例
links: [
{
to: '/',
icon: 'mdi-view-dashboard',
text: 'Dashboard',
},
{
icon: 'mdi-account',
text: 'User Profile',
subLinks: [
{
to: '/update-contact',
text: 'Update Contact Details',
},
{
to: '/review-registration',
text: 'Review Registration',
},
],
},
],
我想做的是有一个主菜单,可以选择添加我认为合适的子菜单。不幸的是,我似乎无法弄清楚如何混合和匹配 list-group 和 list-tile 来完成我想做的事情。我非常感谢提供的任何帮助。谢谢。
原文由 Devildude4427 发布,翻译遵循 CC BY-SA 4.0 许可协议
我一直想做同样的事情,这就是我解决它的方法。
数据:
模板:
对不起,我没有时间造笔。希望这可以帮助 !