2016-03-20 98 views
8

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

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> 

回答

10

在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: [] 
     } 
    } 
} 
+0

我们如何得到路由名称感谢您的答案,实际上有vue-1路由器中的错误这让我发布这个...看日期,无论如何感谢解决方案的逻辑,荣誉。 –

+2

'$ router.options.routes'官方文档在哪里? – vikyd

4

而是中继上Vue公司的内部的,把你的启动构件的内部数据路径。

var map = { 
    '/foo': { 
    component: Foo 
    }, 
    '/bar': { 
    component: Bar 
    } 
} 

var routes = Object.keys(map) 

var App = Vue.extend({ 
    data: function() { 
    return { 
     routes: routes 
    } 
    } 
}) 

router.map(map) 
router.start(App, '#app') 

http://jsfiddle.net/xyu276sa/380/

+0

非常善于思考! –

+0

但我将如何迭代路线? –

+1

查看更新的jsfiddle – zxzak