Menu 电子-更新菜单中的标签
单击此菜单项时,我尝试更新菜单项上的标签。它的工作原理应该类似于单击->显示标签,单击->隐藏标签。这是我的代码:Menu 电子-更新菜单中的标签,menu,electron,Menu,Electron,单击此菜单项时,我尝试更新菜单项上的标签。它的工作原理应该类似于单击->显示标签,单击->隐藏标签。这是我的代码: const template = [{ label: 'Menu', submenu: [{ label: 'Search', click() { win.webContents.executeJavaScript("showSearch()"); // it run function changeSearch() i
const template = [{
label: 'Menu',
submenu: [{
label: 'Search',
click() {
win.webContents.executeJavaScript("showSearch()"); // it run function changeSearch() in main.js
}
},
{
label: 'Resetuj',
click() {
win.loadURL(`file://${__dirname}/index.html?del=1`);
}
},
{
label: 'Quit',
accelerator: 'Q+CmdOrCtrl+Q',
click() {
win.loadURL(`file://${__dirname}/index.html?logout=1&close=1`);
}
}]
}];
changeSearch()我试过这样的方法:
Menu.items[0].submenu.items[0].label = "Changed label";
function addMenuItems(items, position) {
const updateSearchItems = [{
label: 'newOptionDisabled',
enabled: false,
}, {
label: 'newOptionWithAction',
enabled: true,
key: 'newOptionWIthAction',
}, {
label: 'Do some stuff',
visible: false,
key: 'doSomeStuff',
click: () => {
// stuff
},
}];
items.splice.apply(items, [position, 0].concat(updateSearchItems));
}
我想你要找的是这样的东西:
Menu.items[0].submenu.items[0].label = "Changed label";
function addMenuItems(items, position) {
const updateSearchItems = [{
label: 'newOptionDisabled',
enabled: false,
}, {
label: 'newOptionWithAction',
enabled: true,
key: 'newOptionWIthAction',
}, {
label: 'Do some stuff',
visible: false,
key: 'doSomeStuff',
click: () => {
// stuff
},
}];
items.splice.apply(items, [position, 0].concat(updateSearchItems));
}
通过将菜单项定义为可以引用的对象,您可以随时在以后修改该对象。在我的示例中,我使用addMenuItems函数,该函数允许我指定要在现有对象中插入这些项的位置。我这样做是为了动态更改/修改菜单项:
const menuTemplate = [{
label: 'Options',
submenu: [
{
label: 'Hide',
click() {
changeLabel('Show'); // Put logic here
}
}
]
}];
function changeLabel(label) {
menuTemplate[0].submenu[0].label = label;
// Rebuild menu
const menu = Menu.buildFromTemplate(menuTemplate);
Menu.setApplicationMenu(menu);
}
此代码未经测试嘿,我想知道我发布的答案是否解决了你的问题。如果您想了解更多信息或事情仍不清楚,请随时询问。如果你觉得我的答案能够帮助你成功,那么请考虑把它标记为被接受的答案。