2016-03-20 9 views
8

vueルータを使用して簡単なメニューを作成しようとしています。すべてのルートをiterarteし、私のメニューに表示したいのですが、現時点ではコンポーネントの下のメソッドを使用しています。個別のルートを取得するために繰り返しますか?私はマップされた各ルートの下のような何かを得るために、すべてのmapedルートを反復処理したい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 
    } 

} 

:代わりのVueの内部に中継する

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

答えて

10

私は@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

は、あなたの出発コンポーネントのデータ内部ルートを置きます。 Nuxtで

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

関連する問題