Skip to content

Commit aa7735a

Browse files
动态title在路由里配置,meta.title改成一个回调函数,参数是当前路由,返回一个在面包屑和标签栏显示的字符串
1 parent cda8485 commit aa7735a

File tree

4 files changed

+26
-13
lines changed

4 files changed

+26
-13
lines changed

src/components/main/main.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ export default {
136136
route: { name, query, params, meta },
137137
type: 'push'
138138
})
139-
this.setBreadCrumb(newRoute.matched)
139+
this.setBreadCrumb(newRoute)
140140
this.setTagNavList(getNewTagList(this.tagNavList, newRoute))
141141
this.$refs.sideMenu.updateOpenName(newRoute.name)
142142
}
@@ -149,7 +149,7 @@ export default {
149149
this.addTag({
150150
route: this.$store.state.app.homeRoute
151151
})
152-
this.setBreadCrumb(this.$route.matched)
152+
this.setBreadCrumb(this.$route)
153153
// 设置初始语言
154154
this.setLocal(this.$i18n.locale)
155155
// 文档提示

src/libs/util.js

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,17 @@ export const getMenuByRouter = (list, access) => {
5252
* @param {Array} routeMetched 当前路由metched
5353
* @returns {Array}
5454
*/
55-
export const getBreadCrumbList = (routeMetched, homeRoute) => {
55+
export const getBreadCrumbList = (route, homeRoute) => {
56+
let routeMetched = route.matched
5657
let res = routeMetched.filter(item => {
5758
return item.meta === undefined || !item.meta.hide
5859
}).map(item => {
60+
let meta = {...item.meta}
61+
if (meta.title && typeof meta.title === 'function') meta.title = meta.title(route)
5962
let obj = {
6063
icon: (item.meta && item.meta.icon) || '',
6164
name: item.name,
62-
meta: item.meta
65+
meta: meta
6366
}
6467
return obj
6568
})
@@ -69,6 +72,14 @@ export const getBreadCrumbList = (routeMetched, homeRoute) => {
6972
return [Object.assign(homeRoute, { to: homeRoute.path }), ...res]
7073
}
7174

75+
export const getRouteTitleHandled = route => {
76+
let router = {...route}
77+
let meta = {...route.meta}
78+
if (meta.title && typeof meta.title === 'function') meta.title = meta.title(router)
79+
router.meta = meta
80+
return router
81+
}
82+
7283
export const showTitle = (item, vm) => vm.$config.useI18n ? vm.$t(item.name) : ((item.meta && item.meta.title) || item.name)
7384

7485
/**

src/router/routers.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ export default [
304304
name: 'params',
305305
meta: {
306306
icon: 'md-flower',
307-
title: '动态路由',
307+
title: route => `动态路由-${route.params.id}`,
308308
notCache: true,
309309
beforeCloseName: 'before_close_normal'
310310
},
@@ -315,7 +315,7 @@ export default [
315315
name: 'query',
316316
meta: {
317317
icon: 'md-flower',
318-
title: '带参路由',
318+
title: route => `带参路由-${route.query.id}`,
319319
notCache: true
320320
},
321321
component: () => import('@/view/argu-page/query.vue')

src/store/module/app.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import {
66
getHomeRoute,
77
getNextRoute,
88
routeHasExist,
9-
routeEqual
9+
routeEqual,
10+
getRouteTitleHandled
1011
} from '@/libs/util'
1112
import beforeClose from '@/router/before-close'
1213
import router from '@/router'
@@ -31,8 +32,8 @@ export default {
3132
menuList: (state, getters, rootState) => getMenuByRouter(routers, rootState.user.access)
3233
},
3334
mutations: {
34-
setBreadCrumb (state, routeMetched) {
35-
state.breadCrumbList = getBreadCrumbList(routeMetched, state.homeRoute)
35+
setBreadCrumb (state, route) {
36+
state.breadCrumbList = getBreadCrumbList(route, state.homeRoute)
3637
},
3738
setTagNavList (state, list) {
3839
if (list) {
@@ -55,11 +56,12 @@ export default {
5556
}
5657
},
5758
addTag (state, { route, type = 'unshift' }) {
58-
if (!routeHasExist(state.tagNavList, route)) {
59-
if (type === 'push') state.tagNavList.push(route)
59+
let router = getRouteTitleHandled(route)
60+
if (!routeHasExist(state.tagNavList, router)) {
61+
if (type === 'push') state.tagNavList.push(router)
6062
else {
61-
if (route.name === 'home') state.tagNavList.unshift(route)
62-
else state.tagNavList.splice(1, 0, route)
63+
if (router.name === 'home') state.tagNavList.unshift(router)
64+
else state.tagNavList.splice(1, 0, router)
6365
}
6466
setTagNavListInLocalstorage([...state.tagNavList])
6567
}

0 commit comments

Comments
 (0)