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

按子系统切换菜单
默认关闭。宿主打开:
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,行为和以前一样,一次拿全部菜单。
评论
加载评论中…