【发布时间】:2016-07-19 05:40:30
【问题描述】:
我正在使用 Github Electron 和 Angular 1.x 构建桌面应用程序。我需要首先创建一个登录窗口,一旦登录成功,想要显示/实例化主/实际应用程序窗口。
我们如何销毁当前的 Electron 窗口实例并从 AngularJS JavaScript 控制器创建一个新的窗口实例?
【问题讨论】:
标签: electron
我正在使用 Github Electron 和 Angular 1.x 构建桌面应用程序。我需要首先创建一个登录窗口,一旦登录成功,想要显示/实例化主/实际应用程序窗口。
我们如何销毁当前的 Electron 窗口实例并从 AngularJS JavaScript 控制器创建一个新的窗口实例?
【问题讨论】:
标签: electron
我提出的第一个建议是不要有多个窗口,而是要有多个路线。要在 Angular 1.x 中执行路线,请查看angular-ui-router。
使用路由,您将使用同一窗口并更改在同一窗口内运行的应用程序的状态。
但是,您也可以通过简单地创建多个BrowserWindow 对象或在同一个窗口上多次调用loadURL 来拥有多个窗口。
您可以在登录完成后使用ipc 模块与主进程通信,以触发所需的行为。
// main.js (main process)
const {app, BrowserWindow, ipcMain} = require('electron')
app.on('activate', () => {
var win = new BrowserWindow()
win.loadURL(`file://${__dirname}/login.html`)
ipcMain.on('login-success', () => {
win.loadURL(`file://${__dirname}/index.html`)
})
})
然后在您的渲染过程中,只需将login-success 消息发回即可。
// login.js (render process)
var {ipcRenderer} = require('electron')
ipcRenderer.send('login-success') // call this after the user logs in
【讨论】: