Electron 修改单个菜单项?

Eul*_*lar 3 javascript electron

所以,我正在使用电子构建软件。现在我可以从模板在软件中添加菜单

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

但是如何修改单个菜单项。例如,save默认情况下禁用菜单并在open单击后激活。也说点击后出现open一个新菜单edit。我可以完整地创建完整的新模板,只需使用新模板更改以前的模板。但这是一种糟糕的方法,当我使用带有多个子菜单的多个菜单时,这不是一个实用的解决方案。那么我可以只修改我选择的一个菜单项吗?

qui*_*mmo 6

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

import { Menu } from 'electron';

Menu.getApplicationMenu().items // all the items
Menu.getApplicationMenu().getMenuItemById('MENU_ITEM_ID') // get a single item by its id
Run Code Online (Sandbox Code Playgroud)

之后,您在单个菜单项上有几个属性:

- checked
- enabled
- visible
- label
- click
Run Code Online (Sandbox Code Playgroud)

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

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