首页 > 解决方案 > 我无法更改复选框的状态

问题描述

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

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

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

1

在此处输入图像描述

解决方案:

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

标签: electron

解决方案


因为你没有正确设置checked属性的布尔值。

尝试:

menuItem.checked = !menuItem.checked

代替:

menuItem.checked = true ? false : true;

解释:

分配menuItem.checked = true ? false : true;将始终分配给falsemenuItem.checked因为true始终是true...。

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

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

编辑

另外,我认为您需要checked正确设置 -property。

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

推荐阅读