Я использую Vuetify's navigation drawer
.Структура навигации исходит из магазина Vuex.
Идея состоит в том, чтобы сохранить структуру навигации в объекте и построить навигацию оттуда, поэтому я решил использовать динамический компонент <component :is="componentName"/>
.
* 1006.* У меня есть 2 компонента, им нужны разные дочерние элементы, поэтому я попытался сказать
dynamic component
, чтобы установить правильное значение
child
на основе текущего компонента.
<template>
<v-navigation-drawer
app
stateless
value="true"
>
<v-list>
<component
v-for="(item, i) in $store.state.leftMenu.structure"
:key="i"
:is="item.submenus ? 'vListGroup' : 'vListTile'"
:prepend-icon="item.icon"
>
<template v-if="item.submenus">
<template v-slot:activator>
<v-list-tile>
<v-list-tile-title v-text="item.title"/>
</v-list-tile>
</template>
<v-list-group
v-for="(submenu, i) in item.submenus"
:key="i"
no-action
sub-group
>
<template v-slot:activator>
<v-list-tile>
<v-list-tile-title v-text="submenu.title"/>
</v-list-tile>
</template>
<v-list-tile
v-for="(submenuChild, i) in submenu.childs"
:key="i">
<v-list-tile-title v-text="submenuChild.title"/>
<v-list-tile-action>
<v-icon v-text="submenuChild.icon"/>
</v-list-tile-action>
</v-list-tile>
</v-list-group>
</template>
<template v-else>
<v-list-tile-action>
<v-icon v-text="item.icon"/>
</v-list-tile-action>
<v-list-tile-title v-text="item.title"/>
</template>
</component>
</v-list>
</v-navigation-drawer>
</template>
Это то, что я получил:
Errors compiling template: <template v-slot> can only appear at the root level inside the receiving the component
<template v-if="item.submenus">
<template v-slot:activator>
^^^^^^^^^^^^^^^^^^^^^^^^^^^
<v-list-tile>
^^^^^^^^^^^^^^^^^^^^^^^
<v-list-tile-title v-text="item.title"/>
Что я делаю не так?