• Breadcrumb面包屑
    • 何时使用
    • 代码演示
      • 基本
      • 带有图标的
      • 分隔符
      • vue-router
  • API
    • 和 browserHistory 配合

    Breadcrumb面包屑

    显示当前页面在系统层级结构中的位置,并能向上返回。

    何时使用

    • 当系统拥有超过两级以上的层级结构时;
    • 当需要告知用户『你在哪里』时;
    • 当需要向上导航的功能时。

    代码演示

    Breadcrumb面包屑 - 图1

    基本

    最简单的用法

    1. <template>
    2. <a-breadcrumb>
    3. <a-breadcrumb-item>Home</a-breadcrumb-item>
    4. <a-breadcrumb-item><a href="">Application Center</a></a-breadcrumb-item>
    5. <a-breadcrumb-item><a href="">Application List</a></a-breadcrumb-item>
    6. <a-breadcrumb-item>An Application</a-breadcrumb-item>
    7. </a-breadcrumb>
    8. </template>

    Breadcrumb面包屑 - 图2

    带有图标的

    图标放在文字前面

    1. <template>
    2. <a-breadcrumb>
    3. <a-breadcrumb-item href="">
    4. <a-icon type="home" />
    5. </a-breadcrumb-item>
    6. <a-breadcrumb-item href="">
    7. <a-icon type="user" />
    8. <span>Application List</span>
    9. </a-breadcrumb-item>
    10. <a-breadcrumb-item>
    11. Application
    12. </a-breadcrumb-item>
    13. </a-breadcrumb>
    14. </template>

    Breadcrumb面包屑 - 图3

    分隔符

    使用separator=">"可以自定义分隔符,或者使用slot="separator"自定义更复杂的分隔符

    1. <template>
    2. <div>
    3. <a-breadcrumb separator=">">
    4. <a-breadcrumb-item>Home</a-breadcrumb-item>
    5. <a-breadcrumb-item href="">Application Center</a-breadcrumb-item>
    6. <a-breadcrumb-item href="">Application List</a-breadcrumb-item>
    7. <a-breadcrumb-item>An Application</a-breadcrumb-item>
    8. </a-breadcrumb>
    9. <a-breadcrumb>
    10. <span slot="separator" style="color: red">></span>
    11. <a-breadcrumb-item>Home</a-breadcrumb-item>
    12. <a-breadcrumb-item href="">Application Center</a-breadcrumb-item>
    13. <a-breadcrumb-item href="">Application List</a-breadcrumb-item>
    14. <a-breadcrumb-item>An Application</a-breadcrumb-item>
    15. </a-breadcrumb>
    16. </div>
    17. </template>

    Breadcrumb面包屑 - 图4

    vue-router

    vue-router 进行结合使用。

    1. <template>
    2. <div>
    3. <a-breadcrumb :routes="routes">
    4. <template slot="itemRender" slot-scope="{route, params, routes, paths}">
    5. <span v-if="routes.indexOf(route) === routes.length - 1">
    6. {{route.breadcrumbName}}
    7. </span>
    8. <router-link v-else :to="`${basePath}/${paths.join('/')}`">
    9. {{route.breadcrumbName}}
    10. </router-link>
    11. </template>
    12. </a-breadcrumb>
    13. <br/>
    14. {{$route.path}}
    15. </div>
    16. </template>
    17. <script>
    18. export default {
    19. data(){
    20. const { lang } = this.$route.params
    21. return {
    22. basePath: `/${lang}/components/breadcrumb`,
    23. routes: [{
    24. path: 'index',
    25. breadcrumbName: '首页'
    26. }, {
    27. path: 'first',
    28. breadcrumbName: '一级面包屑'
    29. }, {
    30. path: 'second',
    31. breadcrumbName: '当前页面'
    32. }],
    33. }
    34. },
    35. }
    36. </script>

    API

    参数说明类型可选值默认值
    itemRender自定义链接函数,和 vue-router 配置使用, 也可使用slot="itemRender" 和 slot-scope="props"({route, params, routes, paths}) => vNode-
    params路由的参数object-
    routesrouter 的路由栈信息object[]-
    separator分隔符自定义string|slot'/'

    和 browserHistory 配合

    和 vue-router 一起使用时,默认生成的 url 路径是带有 # 的,如果和 browserHistory 一起使用的话,你可以使用 itemRender 属性定义面包屑链接。

    1. <template>
    2. <a-breadcrumb :routes="routes">
    3. <template slot="itemRender" slot-scope="{route, params, routes, paths}">
    4. <span v-if="routes.indexOf(route) === routes.length - 1">
    5. {{route.breadcrumbName}}
    6. </span>
    7. <router-link v-else :to="paths.join('/')">
    8. {{route.breadcrumbName}}
    9. </router-link>
    10. </template>
    11. </a-breadcrumb>
    12. </template>
    13. <script>
    14. export default {
    15. data(){
    16. return {
    17. routes: [{
    18. path: 'index',
    19. breadcrumbName: '首页'
    20. }, {
    21. path: 'first',
    22. breadcrumbName: '一级面包屑'
    23. }, {
    24. path: 'second',
    25. breadcrumbName: '当前页面'
    26. }],
    27. }
    28. },
    29. }
    30. </script>