Просмотр исходного кода

menu key对switch的子页面没有配置menu时取父菜单配置

menu key对switch的子页面没有配置menu时取父菜单配置
Amumu 7 лет назад
Родитель
Сommit
212bc8893d
1 измененных файлов с 17 добавлено и 2 удалено
  1. 17 2
      src/common/router.js

+ 17 - 2
src/common/router.js

@@ -70,6 +70,22 @@ function getFlatMenuData(menus) {
   return keys;
 }
 
+function findMenuKey(menuData, path) {
+  const menuKey = Object.keys(menuData).find(key => pathToRegexp(path).test(key));
+  if (menuKey == null) {
+    if (path === '/') {
+      return null;
+    }
+    const lastIdx = path.lastIndexOf('/');
+    if (lastIdx < 0) {
+      return null;
+    }
+    // 如果没有,使用上一层的配置
+    return findMenuKey(menuData, path.substr(0, lastIdx));
+  }
+  return menuKey;
+}
+
 export const getRouterData = app => {
   const routerConfig = {
     '/': {
@@ -185,8 +201,7 @@ export const getRouterData = app => {
   Object.keys(routerConfig).forEach(path => {
     // Regular match item name
     // eg.  router /user/:id === /user/chen
-    const pathRegexp = pathToRegexp(path);
-    const menuKey = Object.keys(menuData).find(key => pathRegexp.test(`${key}`));
+    const menuKey = findMenuKey(menuData, path);
     let menuItem = {};
     // If menuKey is not empty
     if (menuKey) {