huibing.xie | 1f1606f | 2018-08-20 15:46:55 +0800 | [diff] [blame^] | 1 | <template> |
| 2 | <el-breadcrumb class="app-breadcrumb" separator="/"> |
| 3 | <transition-group name="breadcrumb"> |
| 4 | <el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path" v-if="item.meta.title"> |
| 5 | <span v-if="item.redirect==='noredirect'||index==levelList.length-1" class="no-redirect">{{item.meta.title}}</span> |
| 6 | <router-link v-else :to="item.redirect||item.path">{{item.meta.title}}</router-link> |
| 7 | </el-breadcrumb-item> |
| 8 | </transition-group> |
| 9 | </el-breadcrumb> |
| 10 | </template> |
| 11 | |
| 12 | <script> |
| 13 | export default { |
| 14 | created() { |
| 15 | this.getBreadcrumb() |
| 16 | }, |
| 17 | data() { |
| 18 | return { |
| 19 | levelList: null |
| 20 | } |
| 21 | }, |
| 22 | watch: { |
| 23 | $route() { |
| 24 | this.getBreadcrumb() |
| 25 | } |
| 26 | }, |
| 27 | methods: { |
| 28 | getBreadcrumb() { |
| 29 | let matched = this.$route.matched.filter(item => item.name) |
| 30 | const first = matched[0] |
| 31 | if (first && first.name !== 'Dashboard') { |
| 32 | matched = [{ path: '/dashboard', meta: { title: '离校系统' }}].concat(matched) |
| 33 | } |
| 34 | this.levelList = matched |
| 35 | } |
| 36 | } |
| 37 | } |
| 38 | </script> |
| 39 | |
| 40 | <style rel="stylesheet/scss" lang="scss" scoped> |
| 41 | .app-breadcrumb.el-breadcrumb { |
| 42 | display: inline-block; |
| 43 | font-size: 14px; |
| 44 | line-height: 50px; |
| 45 | margin-left: 10px; |
| 46 | .no-redirect { |
| 47 | color: #97a8be; |
| 48 | cursor: text; |
| 49 | } |
| 50 | } |
| 51 | </style> |