Lok*_*oki 7 vue.js vue-router nuxt.js
大家好,我正在尝试在 Nuxt.js 中创建动态“面包屑”,有没有人有一个工作示例,它应该如何工作
我尝试创建一个简单的示例,但它没有按预期工作,有人有可行的解决方案吗?
<template>
<div class="breadcrumbs-component-wrapper">
<b-breadcrumb class="breadcrumbs-holder">
<b-breadcrumb-item
v-for="(item, i) in breadcrumbs"
:key="i"
:to="item.name"
>
Test
</b-breadcrumb-item>
</b-breadcrumb>
</div>
</template>
<script>
export default {
computed: {
breadcrumbs() {
console.log( this.$route.matched);
return this.$route.matched;
},
},
};
</script>
Run Code Online (Sandbox Code Playgroud)
这是我在旧项目中使用的面包屑组件。随意调整它以满足您的需求。它使用 buefy/bulma。
<template>
<div class="level">
<div class="level-left">
<div class="level-item">
<a class="button is-white" @click="$router.back()">
<b-icon icon="chevron-left" size="is-medium" />
</a>
</div>
<div class="level-item">
<nav class="breadcrumb" aria-label="breadcrumbs">
<ul>
<li v-for="(item, i) in crumbs" :key="i" :class="item.classes">
<nuxt-link :to="item.path">
{{ item.name }}
</nuxt-link>
</li>
</ul>
</nav>
</div>
</div>
</div>
</template>
<script>
export default {
computed: {
crumbs() {
const crumbs = []
this.$route.matched.forEach((item, i, { length }) => {
const crumb = {}
crumb.path = item.path
crumb.name = this.$i18n.t('route.' + (item.name || item.path))
// is last item?
if (i === length - 1) {
// is param route? .../.../:id
if (item.regex.keys.length > 0) {
crumbs.push({
path: item.path.replace(/\/:[^/:]*$/, ''),
name: this.$i18n.t('route.' + item.name.replace(/-[^-]*$/, ''))
})
crumb.path = this.$route.path
crumb.name = this.$i18n.t('route.' + this.$route.name, [
crumb.path.match(/[^/]*$/)[0]
])
}
crumb.classes = 'is-active'
}
crumbs.push(crumb)
})
return crumbs
}
}
}
</script>
<style lang="scss" scoped>
/deep/ a {
@include transition();
}
</style>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10983 次 |
最近记录: |