gpt4 book ai didi

angularjs - 关闭 Controller 中加载的BrowserWindow

转载 作者:行者123 更新时间:2023-12-03 12:29:40 25 4
gpt4 key购买 nike

给定一个应用程序,我有一个帮助按钮,该按钮在 Controller 类中打开另一个带有帮助文档文件的BrowserWindow。当我首先关闭帮助窗口时,一切正常。当我关闭原始窗口时,帮助窗口保持打开状态,然后在我关闭窗口时崩溃,因为 Controller 本身已经被删除。我尝试了各种使用ipc消息的方法,但是我认为可以解决它的一种方法,但是我还没有弄清楚如何向所有打开的窗口广播“关闭”消息。当原始窗口关闭时,仅使用app.quit()或app.exit(status)关闭应用程序似乎也不会关闭帮助窗口。这是一个片段

home.html

<button ng-click="_ctrl.showHelp()">Help</button>

homeController.js
const {BrowserWindow} = require('electron').remote;
const {ipcRenderer} = require('electron');

export class HomeController {
constructor() {} //stuff

showHelp() {
let win = new BrowserWindow({
title: 'Help Pages',
nodeIntegration: false,
show: false
});

win.on('closed', () => {
win = null;
});

win.load(`${__dirname}/help.html`);

win.once('ready-to-show', () => {
win.show();
});
}
}

index.js
const { app, ipcMain, ipcRenderer } = require('electron');
const { BrowserWindow } = require('electron').remote;

let mainWindow = null;

app.on('window-all-closed', () => {
app.quit();
}

app.on('ready', () => {
mainWindow = new BrowserWindow({
width: 1200,
height: 800,
show: false,
});

mainWindow.on('closed', () => {
mainWindow = null;

app.quit(); //neither of these work
app.exit(0); //neither of these work
});

mainWindow.loadURL(`file://${__dirname}/index.html`);
mainWindow.show();
});

任何方向将不胜感激。

最佳答案

为了解决这个问题,您只需要在index.js上放置帮助窗口的实例,就可以将帮助窗口实例设置为close事件上的主窗口,以在关闭帮助窗口时将其关闭。

示例

const mainWindow = null;
const helpWindow = null;

mainWindow = new BrowserWindow()
mainWindow.on('close', function(){
helpWindow = null
mainWindow = null
})

为了更好的实践,您希望将所有窗口存储在一个数组中,但是为了简单起见,我这样做了。希望我能对您有所帮助。哦,仅在渲染器上使用remote和ipcRenderers,ipcMain仅用于index.js。

关于angularjs - 关闭 Controller 中加载的BrowserWindow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38000195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com