2016-03-20 7 views
8

versuche ich ein einfaches menü mit vue router zu erstellen, ID wie iterarte alle routen und display in meinem menü, zZ benutze unten methode in meiner komponente aber ich bekomme nur eine funktion, wie würde Ich wiederhole, um individuelle Routen zu bekommen?bekomme alle routen in einem vue router

methods : { 
getMenuLinks: function() { 

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

} 

Ich möchte alle maped Routen wiederholen, etwas zu bekommen, wie unter jeder gelegter Route:

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

Antwort

10

In Nuxt werden die Routen automatisch erzeugt, so konnte ich nicht tun, was vorgeschlagen @zxzak.

Folgendes können Sie in diesem Fall tun.

<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

Vielen Dank für die Antwort, tatsächlich gab es einen Fehler in vue-1 Router Das hat mich dazu gebracht, dies zu veröffentlichen ... siehe Datum, trotzdem vielen Dank für die Lösungslogik, ein großes Lob. –

+2

Wo ist das offizielle Dokument '$ router.options.routes'? – vikyd

4

Statt auf Vue Interna von Umsetzungsgebiete, Routen innerhalb der Daten Ihrer Ausgangskomponente.

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

sehr gut denken! –

+0

aber wie würde ich die Routen iterieren? –

+1

check out die aktualisierte jsfiddle – zxzak