面包屑导航、足迹的实现

相当于一个路径导航,也可以记录用户的访问历史,常常需要这样一种效果。在我写类似的导航逻辑时,遇到一些问题,在此记录。
导航样式
样式原本是想使用element的面包屑导航,如图所示的组件:
1 | <el-breadcrumb separator-class="el-icon-arrow-right"> |
后来改了下,并没有使用它的功能,相当于使用普通的div和li:
1 | <div id="vue_el_breadcrumb" th:fragment="el_breadcrumb" class="img-rounded "> |
业务逻辑
由于想使用Vue的v-for指令进行动态的遍历,所以需要一个数组,起名为breadcrumb。
原先打算将这个数组存入sessionStorage,在每次切换页面的时候读取、截取这个数组:
javaScript
1 | <script> |
但这样做只解决了重复问题、截取的问题,还有两个Bug,一个是排序,一个是误存,因此,当用户直接访问详情页,然后再访问主页时,就会出现这种情况:

Java
因此,针对这两项,我做了改善,这是java后端版本的代码,方便查看效果:
Controller
1 | /**面包屑导航 辅助 |
Service
1 | package cn.shirtiny.community.SHcommunity.Service.ServiceImpl; |
- 其中,
Comparator比较器为
1 | //路径比较器 |
这里对路径path的排序,是通过比较split(“/“)的长度来完成的,正在考虑其他方法。出于某种原因,我并没有采用将导航集合给定的做法。
结果分析
- Test_1
①访问主页:

②访问详情页

③返回主页

- Test_2
①直接访问详情页

②再访问主页

在直接访问详情页时,会显示主页、详情页,这里是我刻意的处理,现在还没有对页面标识、排序的思路,暂且这么处理。