Vue breadcrumbs builds on the official vue-router package to provide simple breadcrumbs. This package is backwards compatible to support both Vue 1.x and Vue 2.x.
<script src="../dist/vue-breadcrumbs.min.js"></script>
Vue.use(VueBreadcrumbs)
or via npm:
$ npm install vue-breadcrumbs
import VueBreadcrumbs from 'vue-breadcrumbs'
Vue.use(VueBreadcrumbs)
Define the matching breadcrumb text in your routes.
An options object can also be passed into the plugin to specify your own template and rendering methods if desired. For example:
Vue.use(VueBreadcrumbs, {
template: '<nav class="breadcrumb" v-if="$breadcrumbs.length"> ' +
'<router-link class="breadcrumb-item" v-for="(crumb, key) in $breadcrumbs" :to="linkProp(crumb)" :key="key">{{ crumb | crumbText }}</router-link> ' +
'</nav>'
});
By default the plugin will autoregister a breadcrumbs
component which is globally accessible in your app (thanks to HermannBjorgvin. To disable this functionality you can set the registerComponent
option to false
when registering the component, like so:
Vue.use(VueBreadcrumbs, {
registerComponent: false
});
Note: if referencing directly in the browser rather than as a module, there is no way to stop the default component from registering.
Use the breadcrumb:
property of a route or subRoute, e.g.:
router.map({
'/': {
component: Page,
breadcrumb: 'Home Page',
subRoutes: {
'/foo': {
component: Foo,
breadcrumb: 'Foo Page'
},
'/bar': {
component: Bar,
breadcrumb: 'Bar Page'
}
}
}
})
Use the meta.breadcrumb:
property of a route or child route, e.g.:
new VueRouter({
routes: [
{
path: '/',
component: Page,
meta: {
breadcrumb: 'Home Page',
},
children: [
{
path: '/foo',
component: Foo,
meta: {
breadcrumb: 'Foo Page'
}
},
{
path: '/bar',
component: Bar,
meta: {
breadcrumb: 'Bar Page'
}
}
]
}
]
})
You can then render the breadcrumbs using the included <breadcrumbs>
component or using your own markup logic with the global this.$breadcrumbs
property which will return an array of active matched routes.