前言
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計、做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、豐鎮(zhèn)ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的豐鎮(zhèn)網(wǎng)站制作公司
最近在工作中遇到了一個問題,是關(guān)于vue動態(tài)路由多級嵌套面包屑怎么弄(不是動態(tài)路由嵌套可以嘗試用 this.$route.matched
方法獲取到path和name集合,動態(tài)的嵌套獲取不到全部具體的id)
功能比如:A列表頁面路由如/a,點擊任意一列進(jìn)入任意一個A的詳情頁面名字為B,/b/03(這個是動態(tài)路由弄是吧,03就是id嘛),點擊B頁面任意一列,再進(jìn)入B的詳情頁名字為C,路由如/bdetail/01;現(xiàn)在弄面包屑要獲取到的路由是剛剛打開的,如(/a;/b/03;/bdetail/01)
思路:獲取所有進(jìn)入的層級的路由和名稱如breadlist=[{path:'/a',name:'一級'},{path:'/b/03',name:'二級'},{path:'/bdetail/01',name:'三級'}]
,然后遍歷出來如: <span v-for="(item in breadlist)"><router-link :to="item.path">{{item.name}}</router-link></span>
做法
下面貼出相關(guān)代碼:
A列表頁面跳轉(zhuǎn)按鈕:(breadNum記錄面包屑層級)
<router-link :to="{path:'/b/'+id,query:{breadNum:2}}"></router-link>
B列表頁面跳轉(zhuǎn)按鈕:
<router-link :to="{path:'/bbdetail/'+id,query:{breadNum:3}}"></router-link>
breadcrumb.vue頁面:
<template> <div class="breadbox"> <span v-for="(item,index) in breadlist" > <router-link :to="item.path">{{item.name}}</router-link> </span> </div> </template> <script> export default{ created() { this.getBreadcrumb(); }, data() { return { breadlist: '' // 路由集合 } }, methods: { getBreadcrumb() { var breadNumber= this.$route.query.breadNum || 1;//url變量breadNum記錄層級,默認(rèn)為1,如果大于1,要添加上變量; var breadLength=this.$store.state.breadListState.length;//目前breadlist集合數(shù)組個數(shù) var curName=this.$route.name; var curPath=this.$route.fullPath; var newBread={name:curName,path:curPath}; var ishome=curName=='首頁'; console.log(ishome); if(breadNumber===1){//點擊一級菜單 this.$store.commit('breadListStateRemove',1);//初始化,只有首頁面包屑按鈕 if(!ishome)//如果不是首頁 this.$store.commit('breadListStateAdd',newBread);//當(dāng)前頁面添加到breadlist集合 } else if(breadLength<=breadNumber){//如果不是一級導(dǎo)航,并且breadlist集合個數(shù)等于或者小于目前層級 this.$store.commit('breadListStateAdd',newBread);//要把當(dāng)前路由添加到breadlist集合 }else{ this.$store.commit('breadListStateRemove',parseInt(breadNumber)+1);//如果往回點面包屑導(dǎo)航,截??; } this.breadlist=this.$store.state.breadListState; console.log(this.breadlist); } }, watch: { $route () { this.getBreadcrumb(); } }, } </script>
狀態(tài)管理store.js代碼:
export default store = new Vuex.Store({ state: { breadListState:[ {name:'首頁',path:'/'} ] }, mutations: { breadListStateAdd(state,obj){ state.breadListState.push(obj); }, breadListStateRemove(state,num){ state.breadListState=state.breadListState.slice(0,num); } } })
路由route.js代碼:
{ path: '/', name: '首頁', component: Main, redirect:'/home', children:[ {path: '/a',name: 'A頁面',component: APage}, {path: '/b/:id',name: 'B頁面',component: BPage}, {path: '/bdetail/:id',name: 'C頁面',component: CPage}, ] }
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對創(chuàng)新互聯(lián)的支持。
分享題目:vue動態(tài)路由實現(xiàn)多級嵌套面包屑的思路與方法
路徑分享:http://jinyejixie.com/article42/pggchc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、品牌網(wǎng)站建設(shè)、定制開發(fā)、Google、外貿(mào)建站、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)