文档目录
glen
· 预计阅读 1 分钟

按子系统切换菜单

本文导航
按子系统切换菜单

按子系统切换菜单

默认关闭。宿主打开:

await createFlexAdmin({
  subsystems: [adminUi, cmsUi],
  splitSubApp: { enable: true, home: "/portal" }
});

打开之后,登录不会一次装上所有子系统的菜单。进入某个子系统:

import { enterSubApp, leaveSubApp } from "@bit-labs.cn/owl-ui";

enterSubApp("cms");
enterSubApp("admin,cms");
enterSubApp(["admin", "cms"]);

地址栏等价写法是 hash 之前的查询参数:?app=admin,cms。新窗口打开的页面也会带上当前 app,这样新页面按同一组子系统拉菜单,而不是回到切换页。

对应请求:

GET /api/v1/users/me/menus?app=admin,cms

后端只保留根菜单 SubApp 落在这些名字里的项。子节点跟着根走,不会单独过滤。app 为空时仍返回全部菜单。

当前组合记在 sessionStorage 的 owl-current-sub-app。刷新后按它重新拉菜单。动态路由缓存键带上这次的 app,例如 async-routes:admin,cms,避免不同组合串缓存。

再次进入另一组、点回主页或登出时,框架卸掉上次的动态路由,并清空多标签。leaveSubApp 回到 splitSubApp.home。

没开启切换时,getAsyncRoutes() 不带 app,行为和以前一样,一次拿全部菜单。

评论

加载评论中…

上一篇 后端菜单怎样找到页面组件 下一篇 多标签和组件名

BitLabs © 2026 · 论坛讨论 · 博客长文 · 文档手册