获取vue路由器中的所有路由

新手上路,请多包涵

我正在尝试使用 vue 路由器创建一个简单的菜单,id 喜欢迭代所有路由并显示在我的菜单中,目前我在我的组件中使用下面的实例方法,但我只是得到一个函数,我将如何迭代以获得单个路由?

 methods : {
 getMenuLinks: function() {

        var t = this.$router.map() ;
        //t returns a vue object instance
        return t._children ;
        // did not know how to iterate this
   }

 }

我想迭代所有映射的路线以获得每个映射路线的如下内容:

 <a v-link="{ path: 'home' }">Home</a>

原文由 Jimmy Obonyo Abor 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

在 Nuxt 中,路由是自动生成的,所以我不能按照 @zxzak 的建议去做。

在这种情况下,您可以执行以下操作。

 <template v-for="item in items">
    <b-nav-item :to="item.path">
        {{item.name}}
    </b-nav-item>
</template>

 export default {
    created() {
        this.$router.options.routes.forEach(route => {
            this.items.push({
                name: route.name
                , path: route.path
            })
        })
    }
    , data() {
        return {
            items: []
        }
    }
}

原文由 Richard Ayotte 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以在模板中简单地迭代 $router.options.routes

 <nav>
  <router-link v-for="route in $router.options.routes" :key="route.path" :to="route.path">{{ route.name }}</router-link>
</nav>

也许为所选路线添加样式:

 :class="{ active: route.path === $router.currentRoute.path }"

编辑:对于活动类,请改用 https://router.vuejs.org/api/#active-class

原文由 phil294 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏