首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vue-router中某些路由的单独导航抽屉

vue-router中某些路由的单独导航抽屉
EN

Stack Overflow用户
提问于 2020-02-26 21:39:55
回答 2查看 2.2K关注 0票数 0

我正在构建一个与Vuex和vue-router相结合的Vuetify应用程序。一些视图使用默认的导航抽屉,但另一些视图在其导航抽屉中有不同的项目。This documentation say我可以通过道具来查看组件。所以我像这样实现它:

routes/index.js

代码语言:javascript
复制
{
  path: '/courses/:courseId/lessons/:lessonId',
  name: 'Course 1',
  components: {
    default: () => import('@/views/ViewLesson.vue'),
    sidebar: () => import('@/components/CourseNavBar/CourseNavBar.vue')
  },
  props: {
    items: [
      { text: "Link 1", href:"/link1" },
      { text: "Link 2", href:"/link2" }
    ]
  }
}

src/App.vue

代码语言:javascript
复制
<template>
  <v-app>
    <v-app-bar
      app
      color="primary"
      dark
    >
    <h1>My Project</h1>
    </v-app-bar>
    <v-navigation-drawer><router-view :items="items" name="sidebar"/></v-navigation-drawer>
    <v-content>
      <router-view />
    </v-content>
  </v-app>
</template>

但很明显,

src/组件/CourseNavBar.vue

代码语言:javascript
复制
<template>
  <!-- <v-navigation-drawer :value="1"> -->
    <v-list dense>
      <navbar-item v-for="(item, i) in items" :key="i" :item="item" >
        {{ item.text }}
      </navbar-item>
    </v-list>
  <!-- </v-navigation-drawer> -->
</template>

<script>
import NavBarItem from './NavBarItem.vue'
export default {
  props: {
    items: Array
  },
  components: {
    'navbar-item': NavBarItem
  }
}
</script>

但是<CourseNavBar>的道具仍然没有定义,我到底做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2020-02-26 23:48:50

有一些问题..。

:替换= ...

代码语言:javascript
复制
 items: [
    { text:"Link 1", href:"/link1" },
    { text:"Link 2", href:"/link2" }
  ]

并且sidebar组件(不是路由器视图)应该在navigation-drawer的插槽中...

代码语言:javascript
复制
<v-navigation-drawer><sidebar :items="items"></sidebar></v-navigation-drawer>

演示:https://codeply.com/p/oNInfpTwvK

票数 0
EN

Stack Overflow用户

发布于 2020-02-27 01:43:02

在您的routes\index.js中,您需要为每个命名视图定义属性选项:

代码语言:javascript
复制
{
  path: '/courses/:courseId/lessons/:lessonId',
  name: 'Course 1',
  components: {
    default: () => import('@/views/ViewLesson.vue'),
    sidebar: () => import('@/components/CourseNavBar/CourseNavBar.vue')
  },
  props: {
    default: true,
    sidebar: true,
    items: [
      { text: "Link 1", href: "/link1" },
      { text: "Link 2", href: "/link2" }
    ]
  }
}

根据@Zim所说,在将href值赋给props item数组时,您使用了"=“而不是":”。

您可以使用<router-view name="sidebar"/>来输出命名的组件。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60415249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档