Vue 解決多級動態(tài)面包屑導(dǎo)航的問題
固定路由的面包屑導(dǎo)航
我們在配置router的時候,可以將面包屑數(shù)據(jù)配置在meta中,
例如
路由配置:
{
path: '/project/process/:id',
name: 'process',
component: () => import('@/views/project/process/main.vue'),
meta: [
{ name: '項(xiàng)目管理列表' },
{ name: '項(xiàng)目列表', url: '/project/list' },
{ name: '里程碑' },
],
},
代碼:
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item v-for="(item, index) in $route.meta" :key="index">
<router-link v-if="item.url" :to="item.url">{{item.name}}</router-link>
<a v-else>
{{item.name}}
</a>
</el-breadcrumb-item>
</el-breadcrumb>
如果單純的是展示,就可以不用寫url鏈接,路由配置成這樣
{
path: '/project/process/:id',
name: 'process',
component: () => import('@/views/project/process/main.vue'),
meta: [‘項(xiàng)目管理', '項(xiàng)目進(jìn)度', '里程碑'],
},
然后代碼:
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{path: '/home'}">首頁</el-breadcrumb-item>
<el-breadcrumb-item v-for="(item, index) in $route.meta" :key="index">
{{item}}
</el-breadcrumb-item>
</el-breadcrumb>
解決Vue多級動態(tài)面包屑導(dǎo)航
針對一些比較固定式的面包屑是很好實(shí)現(xiàn)的,但是我們在項(xiàng)目中經(jīng)常會遇到一些動態(tài)路由,
例如: A頁面路由為 /list
從A頁面跳轉(zhuǎn)到B頁面為 /list/:id
B頁面下又存在一個字頁面, /list/detail
我們在C頁面想通過面包屑導(dǎo)航的方式進(jìn)入B頁面怎么辦呢?
針對這種動態(tài)嵌套多級路由應(yīng)該怎么處理呢?
配置路由
...
{
path: '/type',
name: 'type',
component: () => import('@/views/type/main.vue'),
meta: [
{ name: '項(xiàng)目分類' },
],
},
{
path: '/type/list/:id',
name: 'list',
component: () => import('@/views/list/type/main.vue'),
meta: [
{ name: '項(xiàng)目分類', url: '/list' },
{ name: '項(xiàng)目列表' },
],
},
{
path: '/list/detail',
name: 'detail',
component: () => import('@/views/type/list/detail/index.vue'),
meta: [
{ name: '項(xiàng)目分類', url: '/list' },
{ name: '項(xiàng)目列表', url: '/type/list' },
{ name: '詳情' },
],
},
...
可以看出這個路由沒有什么區(qū)別,唯一值得注意的一點(diǎn)就是里詳情頁面,是一個動態(tài)的路由,從詳情頁面跳轉(zhuǎn)到項(xiàng)目列表我們需要相應(yīng)的id信息,但是此時id我們不能固定填入,而是一個動態(tài)的值。
修改detail頁面
在milestone頁面監(jiān)聽beforeRouteEnter事件
beforeRouteEnter(to, from, next) {
const meta = to.meta;
for (let i = 0; i < meta.length; i++) {
if (meta[i].name === '項(xiàng)目列表') {
meta[i].url = `/type/list/${from.params.id}`;
}
}
next();
},
在beforeRouteEnter事件中修改meta信息,從而更新面包屑的導(dǎo)航路由。
主要的實(shí)現(xiàn)思路就是在目標(biāo)頁面添加beforeRouteEnter事件,然后更改其meta配置信息,從而達(dá)到更改面包屑導(dǎo)航路徑。
如果你還有更好的解決辦法,歡迎留言。
以上這篇Vue 解決多級動態(tài)面包屑導(dǎo)航的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue vantUI tab切換時 list組件不觸發(fā)load事件的問題及解決方法
這篇文章主要介紹了vue vantUI tab切換時 list組件不觸發(fā)load事件的解決辦法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02
Vue3之組件狀態(tài)保持KeepAlive的簡單使用
這篇文章主要介紹了Vue3之組件狀態(tài)保持KeepAlive的簡單使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05
vue echarts實(shí)現(xiàn)綁定事件和解綁事件
這篇文章主要介紹了vue echarts實(shí)現(xiàn)綁定事件和解綁事件方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06

