2016-07-16 17 views
2

Ich verwende Github Electron und Angular 1.x, um eine Desktop-Anwendung zu erstellen. Ich muss zuerst ein Login-Fenster erstellen und sobald die Anmeldung erfolgreich war, wollte ich das Haupt/aktuelle Anwendungsfenster anzeigen/instanziieren.Mehrere Fenster erstellen

Wie können wir die aktuelle Instanz von Electron window zerstören und eine neue Fensterinstanz vom AngularJS JavaScript Controller erstellen?

Antwort

6

Der erste Vorschlag, den ich machen würde, wäre, nicht mehrere Fenster zu haben, sondern stattdessen mehrere Routen zu haben. Um Routen in eckigen 1.x zu tun, checken Sie die angular-ui-router aus.

Mit Routen würden Sie das gleiche Fenster verwenden und den Status der Anwendung ändern, die innerhalb desselben Fensters ausgeführt wird.

Sie können jedoch auch mehrere Fenster erstellen, indem Sie einfach mehrere BrowserWindow Objekte erstellen oder indem Sie loadURL mehrmals im selben Fenster aufrufen.

Sie können nach Abschluss der Anmeldung mit dem Modul ipc zurück zum Hauptprozess kommunizieren, um das gewünschte Verhalten auszulösen.

// 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`) 
    }) 

}) 

Dann in Ihrem Renderprozess senden Sie einfach die login-success Nachricht zurück.

// login.js (render process) 
var {ipcRenderer} = require('electron') 

ipcRenderer.send('login-success') // call this after the user logs in