正如标题所说,我正试图拥有一个导航抽屉,其中包含可扩展的子菜单,用于某些选项.像"用户配置文件"主菜单选项一样,主菜单选项可能有"更新联系人详细信息"和"查看注册"子菜单.

我试过几种方法,基本上归结到相同的两个问题.因 for each 菜单选项都是一个列表平铺,要么子菜单堆叠在它的右侧(如中所示,整个子菜单位于同一个平铺中),要么整个菜单选项列表都有这些下拉图标,而实际上只有一个菜单选项有一个子菜单.此外,我下面的第二个代码片段还阻止您导航到任何主菜单链接,这不是我们想要的.

示例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',
            },
        ],
    },
],

我想做的是有一个主菜单,可以 Select 添加我认为合适的子菜单.不幸的是,我似乎不知道如何混合和匹配列表组和列表平铺来完成我想要的事情.我非常感谢提供的任何帮助.谢谢

推荐答案

我想做同样的事情,我是这样解决的.

数据:

links: [
    {
        to     : '/dashboard',
        icon   : 'mdi-view-dashboard',
        text   : 'Dashboard',
    },
    {
        icon     : 'mdi-tennis',
        text     : 'Players',
        subLinks : [
            {
                text : 'Players list',
                to    : '/players',
            },
            {
                text : 'Import WTA Players',
                to    : '/players/import',
            },
        ]
    },
    {
        to     : '/tournaments',
        icon   : 'mdi-trophy',
        text   : 'Tournaments',
    },
]

模板:

<v-list>
    <div v-for="(link, i) in links">

        <v-list-tile
            v-if="!link.subLinks"
            :key="i"
            :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>

        <v-list-group
            v-else
            :key="link.text"
            no-action
        >
            <template v-slot:activator>
               <v-list-tile>
                 <v-list-tile-content>
                   <v-list-tile-title>{{ link.text }}</v-list-tile-title>
                 </v-list-tile-content>
               </v-list-tile>
             </template>

            <v-list-tile
                v-for="sublink in link.subLinks"
                :to="sublink.to"
                :key="sublink.text"
            >
                <v-list-tile-title v-text="sublink.text" />
            </v-list-tile>

        </v-list-group>

    </div>
</v-list>

对不起,我没有时间做笔.希望这有帮助!

Vue.js相关问答推荐

当props 的值改变时如何更新类'

Vuetify 2中自定义标头的排序和筛选

Vuetify 复选框未正确显示值

vue3 输入标签给出错误 Vue.use 不是函数

在 Vue.js 2.6 的 Javascript 中访问 的内容

Webpack - MiniCssExtractPlugin 不提取文件

如何使用 vue 或 javascript 向服务器发送密码?

Vuetify 在数据表中插入操作按钮并获取行数据

使用 vue.js 的 axios 预检失败错误 301

Transition-group children must be keyed...but they are keyed

VueJS + Typescript:类型上不存在属性

Vue 3 - 带有全局组件的无法解析组件

我可以使用 vue.js v-if 来判断值是否存在于数组中

NuxtServerInit 在 Vuex 模块模式下不起作用 - Nuxt.js

如何使用 vue.js 获取所选选项的索引

Laravel Blade 模板将数据传递给 Vue JS 组件

'vue' 未被识别为内部或外部命令

将 ref 的内容从子组件传递到另一个 VueJS 子组件

无法访问函数内的数据属性

如何使用vue js判断组件本身的数据何时发生变化?