【问题标题】:Vue + Vuetify + vue-router: changing toolbar content based on pageVue + Vuetify + vue-router:根据页面更改工具栏内容
【发布时间】:2018-06-03 13:03:09
【问题描述】:

Vuetify 有一个非常灵活的布局方案,包括菜单、工具栏、内容和页脚,它允许一些漂亮的 material design schemes,例如Google Contacts:

考虑一个标准设置,其布局由路由器控制,整个站点具有固定菜单,但动态工具栏会随显示的页面而变化。根据显示的页面更改工具栏内容的最佳做法是什么?在 Google 通讯录示例中,我们只希望搜索栏显示在 Contacts 页面上。

根据我对 Vue 的初步了解,这似乎是用 scoped slot 定义路由器布局。可能有很多其他的hacky方法可以实现这一点。但我正在寻找一种干净、模块化的方式来定义跨页面的工具栏内容。

想法:

  • 不久前 vue-router didn't support named slots。不过这个好像有changed recently,虽然没有文档。

  • Named views 似乎是支持使用 vue-router 将工具栏内容绑定到主页的好方法。但是,工具栏似乎没有像插槽那样与主页“对话”的好方法。

【问题讨论】:

  • 也许meta 字段可以帮助解决这个问题? router.vuejs.org/en/advanced/meta.html
  • AFAIU 您不会在其他路线上重复使用联系人搜索栏。那么当你需要它的时候还有更多的情况吗?如果您只需要 v-if="$route.name === 'Contacts'",其他任何事情似乎都过大了。

标签: vue.js vuejs2 vue-component vue-router vuetify.js


【解决方案1】:

您可以在应用程序中定义多个路由器视图。想象一下,您的布局看起来非常简化,如下所示:

<v-app id="app">
  <router-view name="navigation"></router-view>
  <router-view></router-view>
</v-app>

然后你可以为两个路由器视图定义一个带有组件的路由:

{
  path: '/hello',
  components: {
    default: MyHelloComponent,
    navigation: MyNavigationForHelloComponent
  }
}

Documentation

Working Example from Documentation

【讨论】:

  • 希望您提供完整的样本
  • 我加了官方例子的链接
猜你喜欢
  • 2020-02-10
  • 2019-08-15
  • 2015-11-17
  • 2022-01-23
  • 2019-01-09
  • 1970-01-01
  • 2017-09-05
  • 2018-10-27
  • 1970-01-01
相关资源
最近更新 更多