From aa7735aaeaa5cdd19ad784a04bef77c546b79073 Mon Sep 17 00:00:00 2001 From: "zhigang.li@tendcloud.com" Date: Sat, 29 Sep 2018 16:01:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A8=E6=80=81title=E5=9C=A8=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=E9=87=8C=E9=85=8D=E7=BD=AE=EF=BC=8Cmeta.title?= =?UTF-8?q?=E6=94=B9=E6=88=90=E4=B8=80=E4=B8=AA=E5=9B=9E=E8=B0=83=E5=87=BD?= =?UTF-8?q?=E6=95=B0=EF=BC=8C=E5=8F=82=E6=95=B0=E6=98=AF=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E8=B7=AF=E7=94=B1=EF=BC=8C=E8=BF=94=E5=9B=9E=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E5=9C=A8=E9=9D=A2=E5=8C=85=E5=B1=91=E5=92=8C=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E6=A0=8F=E6=98=BE=E7=A4=BA=E7=9A=84=E5=AD=97=E7=AC=A6=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/main/main.vue | 4 ++-- src/libs/util.js | 15 +++++++++++++-- src/router/routers.js | 4 ++-- src/store/module/app.js | 16 +++++++++------- 4 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/components/main/main.vue b/src/components/main/main.vue index cee62ce22..40f90dbfe 100644 --- a/src/components/main/main.vue +++ b/src/components/main/main.vue @@ -136,7 +136,7 @@ export default { route: { name, query, params, meta }, type: 'push' }) - this.setBreadCrumb(newRoute.matched) + this.setBreadCrumb(newRoute) this.setTagNavList(getNewTagList(this.tagNavList, newRoute)) this.$refs.sideMenu.updateOpenName(newRoute.name) } @@ -149,7 +149,7 @@ export default { this.addTag({ route: this.$store.state.app.homeRoute }) - this.setBreadCrumb(this.$route.matched) + this.setBreadCrumb(this.$route) // 设置初始语言 this.setLocal(this.$i18n.locale) // 文档提示 diff --git a/src/libs/util.js b/src/libs/util.js index 2abc99f65..77fd1f49c 100644 --- a/src/libs/util.js +++ b/src/libs/util.js @@ -52,14 +52,17 @@ export const getMenuByRouter = (list, access) => { * @param {Array} routeMetched 当前路由metched * @returns {Array} */ -export const getBreadCrumbList = (routeMetched, homeRoute) => { +export const getBreadCrumbList = (route, homeRoute) => { + let routeMetched = route.matched let res = routeMetched.filter(item => { return item.meta === undefined || !item.meta.hide }).map(item => { + let meta = {...item.meta} + if (meta.title && typeof meta.title === 'function') meta.title = meta.title(route) let obj = { icon: (item.meta && item.meta.icon) || '', name: item.name, - meta: item.meta + meta: meta } return obj }) @@ -69,6 +72,14 @@ export const getBreadCrumbList = (routeMetched, homeRoute) => { return [Object.assign(homeRoute, { to: homeRoute.path }), ...res] } +export const getRouteTitleHandled = route => { + let router = {...route} + let meta = {...route.meta} + if (meta.title && typeof meta.title === 'function') meta.title = meta.title(router) + router.meta = meta + return router +} + export const showTitle = (item, vm) => vm.$config.useI18n ? vm.$t(item.name) : ((item.meta && item.meta.title) || item.name) /** diff --git a/src/router/routers.js b/src/router/routers.js index c09ccf03d..4154ad62b 100644 --- a/src/router/routers.js +++ b/src/router/routers.js @@ -304,7 +304,7 @@ export default [ name: 'params', meta: { icon: 'md-flower', - title: '动态路由', + title: route => `动态路由-${route.params.id}`, notCache: true, beforeCloseName: 'before_close_normal' }, @@ -315,7 +315,7 @@ export default [ name: 'query', meta: { icon: 'md-flower', - title: '带参路由', + title: route => `带参路由-${route.query.id}`, notCache: true }, component: () => import('@/view/argu-page/query.vue') diff --git a/src/store/module/app.js b/src/store/module/app.js index 1d823af60..006ff7254 100644 --- a/src/store/module/app.js +++ b/src/store/module/app.js @@ -6,7 +6,8 @@ import { getHomeRoute, getNextRoute, routeHasExist, - routeEqual + routeEqual, + getRouteTitleHandled } from '@/libs/util' import beforeClose from '@/router/before-close' import router from '@/router' @@ -31,8 +32,8 @@ export default { menuList: (state, getters, rootState) => getMenuByRouter(routers, rootState.user.access) }, mutations: { - setBreadCrumb (state, routeMetched) { - state.breadCrumbList = getBreadCrumbList(routeMetched, state.homeRoute) + setBreadCrumb (state, route) { + state.breadCrumbList = getBreadCrumbList(route, state.homeRoute) }, setTagNavList (state, list) { if (list) { @@ -55,11 +56,12 @@ export default { } }, addTag (state, { route, type = 'unshift' }) { - if (!routeHasExist(state.tagNavList, route)) { - if (type === 'push') state.tagNavList.push(route) + let router = getRouteTitleHandled(route) + if (!routeHasExist(state.tagNavList, router)) { + if (type === 'push') state.tagNavList.push(router) else { - if (route.name === 'home') state.tagNavList.unshift(route) - else state.tagNavList.splice(1, 0, route) + if (router.name === 'home') state.tagNavList.unshift(router) + else state.tagNavList.splice(1, 0, router) } setTagNavListInLocalstorage([...state.tagNavList]) }