楼主定义的这几个菜单还有子项,在代码中遍历将菜单项设为不可见时,同时检查其是否有子项,如果有则将子项同步设为不可见。相应地,菜单父项和子项的可见于不可见设置较为灵活。楼主的代码逻辑ok的,加上菜单子项的判断和状态设置即可。可参考如下代码:
- function addMenu(designer) {
- let oldOpenMenu = designer.getWorkbook().contextMenu.onOpenMenu;
- designer.getWorkbook().contextMenu.onOpenMenu = function(menuData, itemsDataForShown, hitInfo, spread) {
- oldOpenMenu.apply(this, arguments);
- console.log(itemsDataForShown);
- itemsDataForShown.forEach(item => {
- if (item.text === '筛选' || item.text === '排序' ||
- item.text === '插入批注' || item.text === '空单元格必填' || item.text === '复选框' ||
- item.text === '升序' || item.text === '降序') {
- if (item.subMenu) {
- item.subMenu.forEach(subMenu => subMenu.disable = true);
- }
- item.disable = true;
- }
- })
- };
复制代码
|