腾讯云微搭低代码 如何配置动态导航菜单

这篇说说腾讯云微搭低代码布局导航组件的动态菜单配置方法,包括菜单数据结构、多端独立菜单设置及基于用户角色的菜单项动态显隐控制。 菜单配置结构:通过表达式设置菜单属性,支持多端独立菜单与嵌套子菜单。 动态显隐控制:定义全局变量isVisible,在应用启动时判断角色权限,控制菜单项visible属性。

相关产品
腾讯云微搭低代码 产品页,含版本规格、价格与购买入口。

在 B 端应用中常用到导航菜单,本篇将介绍如何基于布局导航 实现动态菜单配置。

注意:说明:

注意:推荐在 应用布局 中使用布局导航组件搭建应用布局,支持多页面引用同一套布局。

一、动态菜单配置结构

将布局导航菜单属性设置为表达式。

完整菜单配置输出结构可参考:

{ isMultiTerminal:true, //是否启动多端独立菜单 menuData:[{ //菜单配置项,如启用多端独立菜单,该配置只对PC端生效 key: "ypoaajhs5wqd",//菜单key值,不可重复 title: "首页", //显示的菜单名称 iconUrl: "td:view-module", //菜单配置中图标为内置图标是,图标名称 iconPath: "", // 菜单项中图标如为自定义图片,自定义图标默认地址 selectedIconPath: "", // 菜单项中图标如为自定义图片,选中时图标地址 children:[{ //二级菜单配置项 key: "ypoaajhs5aqs",//菜单key值,不可重复 title: "子菜单", //显示的菜单名称 disabled:false, //是否禁用 visible:true, //是否显示 iconUrl: "td:view-module", //菜单配置中图标为内置图标时,图标名称 iconPath: "", // 菜单项中图标如为自定义图片,自定义图标默认地址 selectedIconPath: "", // 菜单项中图标如为自定义图片,选中时图标地址 type: "link", //跳转方式。route:内部页面,link:外部链接 path: "", //当type为route时才需配置,内部页面ID packageName: "", //应用分包情况下,当type为route时才需配置,跳转的包标识名称 linkUrl: "https://cloud.tencent.com", //当type为link时才需配置,跳转的外链地址 linkTargetBlank: true, //当type为link时才需配置,是否新开页面 }]}],mobileMenuData:[ //菜单配置项,如启用多端独立菜单,该配置只对移动端端生效,isMultiTerminal为false时可不配置 { key: "ypoaajhs5ytr", title: "移动端菜单", iconUrl: "td:view-module", //菜单配置中图标为内置图标是,图标名称 iconPath: "", // 菜单项中图标如为自定义图片,自定义图标默认地址 selectedIconPath: "", // 菜单项中图标如为自定义图片,选中时图标地址 type: "route", //跳转方式。route:内部页面,link:外部链接 path: "/index", //当type为route时才需配置,内部页面ID packageName: "", //应用分包情况下,当type为route时才需配置,跳转的包标识名称 inkUrl: "", //当type为link时才需配置,跳转的外链地址 linkTargetBlank: true, //当type为link时才需配置,是否新开页面 } ]}

二、菜单项动态显隐控制示例

实现仅超级管理员可见,其他角色隐藏某菜单项场景。

三、定义变量及方法

1. 前往布局设计中,定义菜单是否显示的全局变量 isVisible,默认值设为 false。

2. 打开代码编辑器,全局方法中判断当前登录角色是否可见。本示例假设仅超级管理员可见,可根据业务调整。

async onAppLaunch(launchOpts) { //console.log('———> LifeCycle onAppLaunch', launchOpts) let hasAdministrator = await $w.auth.getUserInfo().relatedRoles.some(function (obj) { return obj.roleIdentity === 'administrator'; }); $w.app.dataset.state.isVisible = hasAdministrator }

注意:说明:

注意:该示例下请定义全局级变量及方法,页面级定义菜单显隐使用将受限。

四、设置菜单

1. 应用布局设计下,在顶部导航布局中将布局导航菜单属性设置为表达式。

2. 表达式示例如下:

结构如下:

({ isMultiTerminal:false, menuData:[{ key: "ypoaajhs5wqd", title: "首页", iconUrl: "td:view-module", iconPath: "", selectedIconPath: "", children:[{ key: "ypoaajhs5aqs", title: "子菜单", disabled:false, visible:$w.app.dataset.state.isVisible, //当为超级管理员时才显示 iconUrl: "td:view-module", iconPath: "", selectedIconPath: "", type: "link", path: "/index", packageName: "", linkUrl: "https://cloud.tencent.com", linkTargetBlank: true, }]},{ key: "ypoaajhs5aaa", title: "监控日志", disabled:false, visible:$w.app.dataset.state.isVisible, //当为超级管理员时才显示 iconUrl: "td:view-module", iconPath: "", selectedIconPath: "", type: "link", path: "/index", packageName: "", linkUrl: "", linkTargetBlank: true, }]})

3. 前往页面设计,在页面属性-页面布局中使用顶部导航布局。

4. isVisible 默认值为 false,菜单隐藏。如配置后可以展示完整菜单即表示角色控制生效。

赞 (0)
上一篇 4天前
下一篇 4天前