我的电子应用程序有一个应用程序菜单,其中“打开最近”条目作为子菜单。此子菜单中的条目提供了10个最近访问过的文档。我在应用程序启动时填充此菜单,一切正常。但是,为了有资格成为“最近”访问过的文档,我不时会刷新此列表,而不仅仅是在应用程序启动时。我怎样才能做到这一点?
这个
有两个具体的子问题Menu.buildFromTemplate()
创建一个新菜单,然后将其分配给应用程序菜单层次结构中的submenu
条目(我第一次创建它时保存了对应用程序菜单的引用)。但这不起作用。答案 0 :(得分:1)
似乎setMenu
是您唯一的选择。至于何时做 - 对于" Open Recent"功能,我认为您可以在打开文档时(或关闭文档后)执行此操作:将文档添加到菜单模板并再次调用setMenu
。
这是从2014年开始,但听起来似乎是定义的行为:
Modifying Menu object after setMenu can produce unregistered/dangling accelerators #846
在atom-shell中更新菜单栏或应用程序菜单的正确方法是 在你之后调用BrowserWindow.setMenu或app.setApplicationMenu 每次修改Menu对象。
这是因为Menu实际上充当模型,本机菜单是 在调用setMenu之前不会创建,所以如果你没有更改模型 更新本机菜单,可能会发生不好的事情。我们使用这种设计 因为它完美地代表了Chromium使用的菜单库 大多数菜单都是静态的。
但我认为我们应该找到一种方法来防止崩溃并制造它 在文件中清楚。
和
我关闭了这个,因为我们不支持更改菜单对象 如果用户这样做,则调用setMenu,行为是未定义的。
答案 1 :(得分:0)
Menu.setApplicationMenu是您要寻找的。更改菜单后即可调用它。
const menu = Menu.buildFromTemplate(template);
Menu.setApplicationMenu(menu);