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);
}

此代码未经测试

嘿,我想知道我发布的答案是否解决了你的问题。如果您想了解更多信息或事情仍不清楚,请随时询问。如果你觉得我的答案能够帮助你成功,那么请考虑把它标记为被接受的答案。