標準のネイティブアプリケーションと同様に、私の電子アプリケーションは、ライブ使用結果に基づいていくつかのメニュー項目のステータス(有効/無効)を変更する必要があります。Electronのメニュー項目のステータスを動的に変更する
私はmain.jsに私のメニューを設定しています:
function createWindow() {
...
...
require('./menu/mainmenu');
}
のMenuItem私はMAINMENUに定義されている変更する必要があります。
{ label: "Show Colors",
accelerator: 'CmdOrCtrl+1',
enabled: getStatus(),
click() {getWebviewWebContents().send('switchToColors');}
},
getStatus()
がfalse
またはtrue
を返す関数です。
これはElectronでは動作しません。メニューはアプリケーションの開始時に作成され、まったく変更できないためです。ダイナミックなメニュー項目が非常に一般的なので(メニューチェックボックス、有効/無効など)、これは深刻な欠点と考えています。
これに対応する方法はありますか?
これは私がすでに試したものですが、成功はありません。 メニューはキャッシュ内に何かを保持しているように見えますが、再構築するたびに同じです(有効にした変数をfalseからtrueに変更したとしても) –
再構築後に毎回メニューを明示的に設定しましたか( 'setApplicationMenu' ) –