电子修改单个菜单项?

时间:2019-01-09 07:38:04

标签: javascript electron

因此,我正在使用electron建立软件库。现在,我可以通过模板在软件中添加菜单

var menu = Menu.buildFromTemplate([
  {
      label: 'Menu',
      submenu: [
          {label:'open'},
          {label:'save'},
          {label:'Exit'}
      ]
  }
])
Menu.setApplicationMenu(menu);

但是如何修改单个菜单项。例如,假设save菜单在默认情况下处于禁用状态,并在单击open之后被激活。还要说一下,点击open后会出现一个新菜单edit。我可以完整地创建完整的新模板,而只需用新模板更改以前的模板。但这是一种不好的方法,当我使用带有几个子菜单的几个菜单时,这不是一个实际的解决方案。那我可以只修改一个菜单项吗?

1 个答案:

答案 0 :(得分:3)

您可以使用以下菜单获取菜单项:

import { Menu } from 'electron';

Menu.getApplicationMenu().items // all the items
Menu.getApplicationMenu().getMenuItemById('MENU_ITEM_ID') // get a single item by its id

此后,您在单个菜单项上具有以下几个属性:

- checked
- enabled
- visible
- label
- click

您可以根据需要自定义行为。

用电子3.0.5进行测试,在27 Sep 2017之前,方法getMenuItemById不存在,您必须遍历所有项目。