| <template> | 
|     <view class="uni-breadcrumb-item"> | 
|         <view :class="{ | 
|             'uni-breadcrumb-item--slot': true, | 
|             'uni-breadcrumb-item--slot-link': to && currentPage !== to | 
|             }" @click="navTo"> | 
|             <slot /> | 
|         </view> | 
|         <i v-if="separatorClass" class="uni-breadcrumb-item--separator" :class="separatorClass" /> | 
|         <text v-else class="uni-breadcrumb-item--separator">{{ separator }}</text> | 
|     </view> | 
| </template> | 
| <script> | 
|     /** | 
|      * BreadcrumbItem 面包屑导航子组件 | 
|      * @property {String/Object} to 路由跳转页面路径/对象 | 
|      * @property {Boolean} replace 在使用 to 进行路由跳转时,启用 replace 将不会向 history 添加新记录(仅 h5 支持) | 
|      */ | 
|     export default { | 
|         data() { | 
|             return { | 
|                 currentPage: "" | 
|             } | 
|         }, | 
|         options: { | 
|             virtualHost: true | 
|         }, | 
|         props: { | 
|             to: { | 
|                 type: String, | 
|                 default: '' | 
|             }, | 
|             replace:{ | 
|                 type: Boolean, | 
|                 default: false | 
|             } | 
|         }, | 
|         inject: { | 
|             uniBreadcrumb: { | 
|                 from: "uniBreadcrumb", | 
|                 default: null | 
|             } | 
|         }, | 
|         created(){ | 
|             const pages = getCurrentPages() | 
|             const page = pages[pages.length-1] | 
|   | 
|             if(page){ | 
|                 this.currentPage = `/${page.route}` | 
|             } | 
|         }, | 
|         computed: { | 
|             separator() { | 
|                 return this.uniBreadcrumb.separator | 
|             }, | 
|             separatorClass() { | 
|                 return this.uniBreadcrumb.separatorClass | 
|             } | 
|         }, | 
|         methods: { | 
|             navTo() { | 
|                 const { to } = this | 
|   | 
|                 if (!to || this.currentPage === to){ | 
|                     return | 
|                 } | 
|   | 
|                 if(this.replace){ | 
|                     uni.redirectTo({ | 
|                         url:to | 
|                     }) | 
|                 }else{ | 
|                     uni.navigateTo({ | 
|                         url:to | 
|                     }) | 
|                 } | 
|             } | 
|         } | 
|     } | 
| </script> | 
| <style lang="scss"> | 
|     $uni-primary: #2979ff !default; | 
|     $uni-base-color: #6a6a6a !default; | 
|     $uni-main-color: #3a3a3a !default; | 
|     .uni-breadcrumb-item { | 
|         display: flex; | 
|         align-items: center; | 
|         white-space: nowrap; | 
|         font-size: 14px; | 
|   | 
|         &--slot { | 
|             color: $uni-base-color; | 
|             padding: 0 10px; | 
|   | 
|             &-link { | 
|                 color: $uni-main-color; | 
|                 font-weight: bold; | 
|                 /* #ifndef APP-NVUE */ | 
|                 cursor: pointer; | 
|                 /* #endif */ | 
|   | 
|                 &:hover { | 
|                     color: $uni-primary; | 
|                 } | 
|             } | 
|         } | 
|   | 
|         &--separator { | 
|             font-size: 12px; | 
|             color: $uni-base-color; | 
|         } | 
|   | 
|         &:first-child &--slot { | 
|             padding-left: 0; | 
|         } | 
|          | 
|         &:last-child &--separator { | 
|             display: none; | 
|         } | 
|     } | 
| </style> |