因此,我试图实现一个布局与可选侧栏的基础上vue路线
目前我有以下内容:
1.一个App.vue
,它有一个MainLayout
组件,组件上有放置路由器视图的插槽
<main-layout>
<template #main>
<router-view/>
</template>
<template #sidebar>
<router-view name="LeftSidebar"/>
</template>
<template #rightsidebar>
<router-view name="RightSidebar"/>
</template>
</main-layout>
1.路由器看起来像这样:
const routes = [
{
path: "/lectures",
components: {
default: LectureList,
LeftSidebar: MainMenu,
}
},
{
path: "/users",
components: {
default: UserList,
LeftSidebar: MainMenu,
RightSidebar: SomeOtherComponent
}
},
]
MainLayout.vue
看起来像这样(简化)
<div>
<div class="left-sidebar">
<slot name="sidebar"/>
</div>
<div class="main">
<slot/>
</div>
<div class="right-sidebar">
<slot name="rightsidebar"/>
</div>
</div>
目前主菜单布局有一个rightsidebar
的插槽,我希望它只有在有一些内容的情况下才能呈现,即如果一些路由为RightSidebar
路由器视图提供了一个组件。我尝试在MainLayout
中查看slots
,并在.right-sidebar
div上添加一个v-if
,以仅显示rightsidebar
插槽是否存在,但我猜它不起作用,因为其中已经存在router-view
处理这类案件有何建议?
1条答案
按热度按时间bf1o4zei1#
使用名为views的Vue路由器的
matched
属性,我们可以检查哪些属性已经通过。在这里的代码中,我添加了一个监视器,它将检查每条路径是否传递了侧边栏视图的属性,并将更新数据属性以用作条件。
如果这有用的话请告诉我。