最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

vue動態(tài)路由實現多級嵌套面包屑的思路與方法

來源:懂視網 責編:小采 時間:2020-11-27 22:32:41
文檔

vue動態(tài)路由實現多級嵌套面包屑的思路與方法

vue動態(tài)路由實現多級嵌套面包屑的思路與方法:前言 最近在工作中遇到了一個問題,是關于vue動態(tài)路由多級嵌套面包屑怎么弄(不是動態(tài)路由嵌套可以嘗試用 this.$route.matched方法獲取到path和name集合,動態(tài)的嵌套獲取不到全部具體的id) 功能比如:A列表頁面路由如/a,點擊任意一列進入任意一個A的詳情頁
推薦度:
導讀vue動態(tài)路由實現多級嵌套面包屑的思路與方法:前言 最近在工作中遇到了一個問題,是關于vue動態(tài)路由多級嵌套面包屑怎么弄(不是動態(tài)路由嵌套可以嘗試用 this.$route.matched方法獲取到path和name集合,動態(tài)的嵌套獲取不到全部具體的id) 功能比如:A列表頁面路由如/a,點擊任意一列進入任意一個A的詳情頁

前言

最近在工作中遇到了一個問題,是關于vue動態(tài)路由多級嵌套面包屑怎么弄(不是動態(tài)路由嵌套可以嘗試用 this.$route.matched方法獲取到path和name集合,動態(tài)的嵌套獲取不到全部具體的id)

功能比如:A列表頁面路由如/a,點擊任意一列進入任意一個A的詳情頁面名字為B,/b/03(這個是動態(tài)路由弄是吧,03就是id嘛),點擊B頁面任意一列,再進入B的詳情頁名字為C,路由如/bdetail/01;現在弄面包屑要獲取到的路由是剛剛打開的,如(/a;/b/03;/bdetail/01)

思路:獲取所有進入的層級的路由和名稱如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>

做法

下面貼出相關代碼:

A列表頁面跳轉按鈕:(breadNum記錄面包屑層級)

<router-link :to="{path:'/b/'+id,query:{breadNum:2}}"></router-link>

B列表頁面跳轉按鈕:

<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記錄層級,默認為1,如果大于1,要添加上變量;
 var breadLength=this.$store.state.breadListState.length;//目前breadlist集合數組個數
 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);//當前頁面添加到breadlist集合
 }
 else if(breadLength<=breadNumber){//如果不是一級導航,并且breadlist集合個數等于或者小于目前層級
 this.$store.commit('breadListStateAdd',newBread);//要把當前路由添加到breadlist集合
 }else{
 this.$store.commit('breadListStateRemove',parseInt(breadNumber)+1);//如果往回點面包屑導航,截??;
 }
 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},
 ]
} 

總結

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

vue動態(tài)路由實現多級嵌套面包屑的思路與方法

vue動態(tài)路由實現多級嵌套面包屑的思路與方法:前言 最近在工作中遇到了一個問題,是關于vue動態(tài)路由多級嵌套面包屑怎么弄(不是動態(tài)路由嵌套可以嘗試用 this.$route.matched方法獲取到path和name集合,動態(tài)的嵌套獲取不到全部具體的id) 功能比如:A列表頁面路由如/a,點擊任意一列進入任意一個A的詳情頁
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top