跳至主要內容

菜单 (Menu)

Mr.Hope大约 3 分钟

菜单 (Menu)

菜单是业务功能的详细入口,使用 MenuWidget.ts 作为该功能的基类。

参数

  • router: 响应式变量,表示应用的路由对象。
  • moduleName: 响应式变量,表示当前应用名称。
  • mode: 响应式变量,表示当前菜单模式,可选值为 'horizontal' 或 'inline',默认为 'inline'。
  • collapsed: 响应式变量,表示当前菜单是否展开或收起,默认为 false
  • collapsed$: 非响应式变量,用于通知当前应用菜单的展开或收起状态变化。
  • menus: 响应式变量,表示当前应用所有菜单的平铺结构,默认为空数组。
  • treeNodes: 响应式变量,表示当前应用菜单的树形结构,默认为空数组。
  • selectedKeys: 响应式变量,表示当前选中的菜单项的键值数组,默认为 undefined
  • openKeys: 响应式变量,表示当前打开的菜单项的键值数组,默认为 undefined

方法

onModuleChange()

  • 类型: 非响应式方法
  • 描述: 在模块发生改变时调用,加载当前模块的菜单信息。
  • 入参:
    • moduleName (String): 模块名称。
protected async onModuleChange(moduleName: string) {}

fetchMenus()

  • 类型: 非响应式方法
  • 描述: 根据模块名称获取菜单信息。
  • 入参:
    • moduleName (String): 模块名称。
  • 返回值:
    • menus (RuntimeMenu[]): 当前应用所有菜单的平铺结构。
    • treeNodes (TreeNode <RuntimeMenu>[]): 当前应用菜单的树形结构。
protected async fetchMenus(moduleName: string): Promise<{ menus: RuntimeMenu[]; treeNodes: TreeNode<RuntimeMenu>[] }> {}

onOpenChange()

  • 类型: 响应式方法
  • 描述: 当菜单折叠/展开时调用,更新当前打开的菜单项的键值数组。
  • 入参:
    • openKeys (String[]): 当前打开的菜单项的键值数组。
@Widget.Method()
protected onOpenChange(openKeys: string[]) {}

onCollapsedChange()

  • 类型: 响应式方法
  • 描述: 当菜单折叠/展开时调用,更新当前菜单的展开或收起状态,并通知相关流。
  • 入参:
    • collapsed (Boolean): 当前菜单的展开或收起状态。
@Widget.Method()
protected onCollapsedChange(collapsed: boolean) {}

onClick()

  • 类型: 响应式方法
  • 描述: 点击菜单项时调用,执行相应的动作。
  • 入参:
    • node (TreeNode <RuntimeMenu>): 当前菜单项的树形结构。
@Widget.Method()
protected async onClick(node: TreeNode<RuntimeMenu>) {}

onSelect()

  • 类型: 响应式方法
  • 描述: 选择菜单项时调用,更新当前选中的菜单项的键值数组,并执行相应的动作。
  • 入参:
    • node (TreeNode <RuntimeMenu>): 当前菜单项的树形结构。
@Widget.Method()
protected async onSelect(node: TreeNode<RuntimeMenu>) {}

executeViewAction()

  • 类型: 非响应式方法
  • 描述: 执行视图跳转动作。
  • 入参:
    • menu (RuntimeMenu): 当前菜单项。
    • viewAction (IViewAction): 视图跳转动作的配置信息。
protected executeViewAction(menu: RuntimeMenu, viewAction: IViewAction) {}

executeServerAction()

  • 类型: 响应式方法
  • 描述: 执行服务器动作。
  • 入参:
    • menu (RuntimeMenu): 当前菜单项。
    • serverAction (IServerAction): 服务器动作的配置信息。
protected async executeServerAction(menu: RuntimeMenu, serverAction: IServerAction) {}

executeUrlAction()

  • 类型: 非响应式方法
  • 描述: 执行 URL 跳转动作。
  • 入参:
    • menu (RuntimeMenu): 当前菜单项。
    • urlAction (IURLAction): URL 跳转动作的配置信息。
protected executeUrlAction(menu: RuntimeMenu, urlAction: IURLAction) {}

handleMenuMapping()

  • 类型: 非响应式方法
  • 描述: 处理菜单映射。
  • 入参:
    • mapping (Record<string, unknown>): 菜单映射配置信息。
  • 返回值:
    • paramResult (Record<string, unknown>): 处理后的映射结果。
protected handleMenuMapping(mapping: Record<string, unknown>) {}

refreshMenuUrlParameters()

  • 类型: 非响应式方法
  • 描述: 刷新菜单的 URL 参数。
  • 入参:
    • model (String): 模型名称。
    • action (String): 动作名称。
protected refreshMenuUrlParameters(model: string, action: string) {}

reloadMaskProcess()

  • 类型: 非响应式方法
  • 描述: 重新加载菜单。
  • 入参:
    • reloadParameters (ReloadMaskCallChainingParameters): 重新加载的参数。
protected async reloadMaskProcess(reloadParameters: ReloadMaskCallChainingParameters) {}

$$mounted()

  • 类型: 非响应式方法
  • 描述: 生命周期钩子,在组件被挂载后调用,初始化路由对象。
protected $$mounted() {}

如何替换

import { MenuWidget, SPI, MaskWidget } from "@kunlun/dependencies";

@SPI.ClassFactory(MaskWidget.Token({ widget: "nav-menu" }))
export class CustomMenuWidget extends MenuWidget {}