javascript - 将动态菜单插入 Electron 菜单栏应用

标签 javascript ecmascript-6 electron

我是 Electron 新手,我正在尝试创建一个Mac菜单栏应用程序,其中包含动态菜单项。我的想法是单击“添加...”时,会在其中添加/添加/插入新菜单项。

我的代码将新项目追加到菜单数组中。但是我不能使它呈现“更新的菜单”。

const { resolve } = require('path');
const { app, Tray, Menu } = require('electron');

const iconPath = resolve(__dirname, 'assets','iconTemplate.png');

let contextMenu;
let tray = null;
let menu;

app.on('ready', function() {
  tray = new Tray(iconPath);
  menu = [
    {
      label: 'Add...',
      click: function() {
        // add new item between 'Add...' and 'Quit'. New one always on top of the last.
        menu.push({label: 'new item'});
      }
    },
    {
      label: 'Quit',
      enabled: false
    }
  ]
  contextMenu = Menu.buildFromTemplate(menu);
  tray.setContextMenu(contextMenu);
});

最佳答案

原来我想通了自己。

let counter = 0; // Start counter globally
// add new item between 'Add...' and 'Quit'. New one always on top of the last.
  menu.splice(1, 0, {label: String(counter)});
  render(); // Call render for every alteration on the menu array
  counter++;
function render() {
  contextMenu = Menu.buildFromTemplate(menu);
  tray.setContextMenu(contextMenu);
}

关于javascript - 将动态菜单插入 Electron 菜单栏应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57226319/

相关文章:

javascript - Firebase/Firestore : No document exists but it should

javascript - 如何更新所有同名的隐藏字段?

javascript - 如何在 Javascript React Native 中获取对象的子值总和?

javascript - 将动态字符串转换为 JavaScript 中的逻辑表达式

javascript - JS获取的中心高的x/y坐标如何获取?

printing - 数据表:打印在Angular 9和Electron中不起作用

javascript - JavaScript中有多人棋盘游戏的框架吗?

jquery - 如果函数返回 jQuery AJAX 输出作为返回

javascript - angular-cli.json 在添加 style.css 时创建错误

node.js - 无法将sqlite3编译为本地插件,Electron React Boilerplate项目