最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue動(dòng)態(tài)路由實(shí)現(xiàn)多級(jí)嵌套面包屑的思路與方法

 更新時(shí)間:2017年08月16日 08:30:44   作者:李洪威  
在實(shí)際項(xiàng)目中我們會(huì)碰到多層嵌套的組件組合而成,比如我們常見(jiàn)的面包屑導(dǎo)航,下面這篇文章就來(lái)給大家介紹關(guān)于vue實(shí)現(xiàn)動(dòng)態(tài)路由多級(jí)嵌套面包屑的思路與方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。

前言

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

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

思路:獲取所有進(jìn)入的層級(jí)的路由和名稱如breadlist=[{path:'/a',name:'一級(jí)'},{path:'/b/03',name:'二級(jí)'},{path:'/bdetail/01',name:'三級(jí)'}] ,然后遍歷出來(lái)如: <span v-for="(item in breadlist)"><router-link :to="item.path">{{item.name}}</router-link></span>

做法

下面貼出相關(guān)代碼:

A列表頁(yè)面跳轉(zhuǎn)按鈕:(breadNum記錄面包屑層級(jí))

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

B列表頁(yè)面跳轉(zhuǎn)按鈕:

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

breadcrumb.vue頁(yè)面:

<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記錄層級(jí),默認(rèn)為1,如果大于1,要添加上變量;
    var breadLength=this.$store.state.breadListState.length;//目前breadlist集合數(shù)組個(gè)數(shù)
    var curName=this.$route.name;
    var curPath=this.$route.fullPath;
    var newBread={name:curName,path:curPath};
    var ishome=curName=='首頁(yè)';
    console.log(ishome);
    if(breadNumber===1){//點(diǎn)擊一級(jí)菜單
     this.$store.commit('breadListStateRemove',1);//初始化,只有首頁(yè)面包屑按鈕
     if(!ishome)//如果不是首頁(yè)
      this.$store.commit('breadListStateAdd',newBread);//當(dāng)前頁(yè)面添加到breadlist集合
    }
    else if(breadLength<=breadNumber){//如果不是一級(jí)導(dǎo)航,并且breadlist集合個(gè)數(shù)等于或者小于目前層級(jí)
     this.$store.commit('breadListStateAdd',newBread);//要把當(dāng)前路由添加到breadlist集合
    }else{
     this.$store.commit('breadListStateRemove',parseInt(breadNumber)+1);//如果往回點(diǎn)面包屑導(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:'首頁(yè)',path:'/'}
 ]
 },
 mutations: {
 breadListStateAdd(state,obj){
  state.breadListState.push(obj);
 },
 breadListStateRemove(state,num){
  state.breadListState=state.breadListState.slice(0,num);
 }
 }

})

路由route.js代碼:

{
 path: '/',
 name: '首頁(yè)',
 component: Main,
 redirect:'/home',
 children:[
  {path: '/a',name: 'A頁(yè)面',component: APage},
  {path: '/b/:id',name: 'B頁(yè)面',component: BPage},
  {path: '/bdetail/:id',name: 'C頁(yè)面',component: CPage},
 ]
} 

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 詳解如何優(yōu)雅運(yùn)用Vue中的KeepAlive組件

    詳解如何優(yōu)雅運(yùn)用Vue中的KeepAlive組件

    在Vue中,KeepAlive組件是一種特殊的組件,用于緩存已經(jīng)渲染過(guò)的組件實(shí)例,本文主要為大家詳細(xì)介紹了KeepAlive組件的用法,需要的小伙伴可以參考下
    2023-09-09
  • vue3中使用swiper的完整版教程(超詳細(xì)!)

    vue3中使用swiper的完整版教程(超詳細(xì)!)

    工作中日常筆記,vue中使用swiper插件,在pc端和h5端也是常用的插件,下面這篇文章主要給大家介紹了關(guān)于vue3中使用swiper的完整版教程,需要的朋友可以參考下
    2023-04-04
  • vue form 表單提交后刷新頁(yè)面的方法

    vue form 表單提交后刷新頁(yè)面的方法

    今天小編就為大家分享一篇vue form 表單提交后刷新頁(yè)面的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • 詳解vue3沙箱機(jī)制

    詳解vue3沙箱機(jī)制

    這篇文章主要介紹了詳解vue3 沙箱機(jī)制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Vue分頁(yè)器實(shí)現(xiàn)原理詳解

    Vue分頁(yè)器實(shí)現(xiàn)原理詳解

    這篇文章主要為大家詳細(xì)介紹了Vue分頁(yè)器實(shí)現(xiàn)原理,編寫了分頁(yè)器組件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Vue中如何實(shí)現(xiàn)proxy代理

    Vue中如何實(shí)現(xiàn)proxy代理

    本篇文章主要介紹了Vue中如何實(shí)現(xiàn)proxy代理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • 用electron 打包發(fā)布集成vue2.0項(xiàng)目的操作過(guò)程

    用electron 打包發(fā)布集成vue2.0項(xiàng)目的操作過(guò)程

    這篇文章主要介紹了用electron 打包發(fā)布集成vue2.0項(xiàng)目的操作步驟,把electron 加入到自己項(xiàng)目中各種不兼容,升級(jí)版本踩坑無(wú)數(shù)個(gè),今天通過(guò)本文給大家分享下詳細(xì)過(guò)程,需要的朋友可以參考下
    2022-10-10
  • Vue中請(qǐng)求本地JSON文件并返回?cái)?shù)據(jù)的方法實(shí)例

    Vue中請(qǐng)求本地JSON文件并返回?cái)?shù)據(jù)的方法實(shí)例

    在前端開發(fā)過(guò)程當(dāng)中,當(dāng)后臺(tái)服務(wù)器開發(fā)數(shù)據(jù)還沒(méi)完善,沒(méi)法與咱們交接時(shí),咱們習(xí)慣在本地寫上一個(gè)json文件做模擬數(shù)據(jù)測(cè)試代碼效果是否有問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于Vue中請(qǐng)求本地JSON文件并返回?cái)?shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • vue自定義指令合集(超實(shí)用!)

    vue自定義指令合集(超實(shí)用!)

    Vue自定義指令是Vue中一種非常有用的擴(kuò)展能力,它允許你在標(biāo)準(zhǔn)的模板語(yǔ)法中使用自定義行為,而不需要編寫新的組件或者混入,這篇文章主要給大家介紹了關(guān)于vue自定義指令的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • 初學(xué)vue出現(xiàn)空格警告的原因及其解決方案

    初學(xué)vue出現(xiàn)空格警告的原因及其解決方案

    今天小編就為大家分享一篇初學(xué)vue出現(xiàn)空格警告的原因及其解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-10-10

最新評(píng)論

吉安县| 明溪县| 锡林郭勒盟| 和政县| 赞皇县| 南靖县| 顺平县| 灵丘县| 玛沁县| 日喀则市| 洛浦县| 徐汇区| 凤凰县| 蓬溪县| 民和| 中西区| 金寨县| 牙克石市| 商南县| 潼关县| 鄂托克旗| 稻城县| 马山县| 时尚| 华宁县| 竹山县| 临城县| 南溪县| 惠州市| 商城县| 庆城县| 齐河县| 邵东县| 宁夏| 胶南市| 东乌珠穆沁旗| 晴隆县| 五原县| 泰顺县| 江西省| 云南省|