我无法更改复选框的状态

时间:2020-02-02 19:00:28

标签: electron

{
  label: 'Live preview',
  type: 'checkbox',
  checked: false,
  click: (menuItem, browserWindow, event) => {
    menuItem.checked = true ? false : true;
    browserWindow.webContents.send('live-preview', menuItem.checked);        
  }
},

当我单击菜单项实时预览(复选框)上的上下文菜单时:始终未选中

当我单击menuItem时如何切换复选框

1

enter image description here

解决方案:

// initialise isChecked variable before the initialisation of context menu
var isChecked = false;

{
  label: 'Live preview',
  type: 'checkbox',
  checked: isChecked,
  click: (menuItem, browserWindow, event) => {
    browserWindow.webContents.send('live-preview', menuItem.checked);
    isChecked = !isChecked;
  }
}

1 个答案:

答案 0 :(得分:1)

因为您没有正确设置选中属性的布尔值。

尝试:

menuItem.checked = !menuItem.checked

代替:

menuItem.checked = true ? false : true;

说明:

由于menuItem.checked = true ? false : true;始终为false,因此分配menuItem.checked将始终将true分配给true

如果要使用三元运算符翻转布尔值,则必须这样做

menuItem.checked = menuItem.checked ? false : true;

编辑

此外,我认为您实际上需要正确设置checked属性。

{
  label: 'Live preview',
  type: 'checkbox',
  checked: false,
  click: (menuItem, browserWindow, event) => {
    menuItem.checked = !menuItem.checked;
    browserWindow.webContents.send('live-preview', menuItem.checked);        
  }
},

由于checked: false,您的复选框始终处于未选中状态。

尝试以下代码:

{
  label: 'Live preview',
  type: 'checkbox',
  click: (menuItem, browserWindow, event) => {
    menuItem.checked = !menuItem.checked; // toggles the menu item
    browserWindow.webContents.send('live-preview', menuItem.checked);        
  }
},