2016-10-09 4 views
2

Ich habe eine Schaltfläche in meiner Elektronen-App, die "Datei öffnen" sagt, und wenn Sie darauf klicken, öffnet sich das Dialogfeld Datei öffnen und ich kann eine Datei auswählen.Elektron - Öffnen Sie die Datei aus dem Menü

Wie kann ich das Dialogfeld "Dateidialog öffnen" öffnen, wenn ich auf einen Menüeintrag in der Symbolleiste der App klicke?

Dies ist mein Label in einem Untermenü für die Symbolleiste Menü:

label: 'Open', 
accelerator: 'CmdOrCtrl+O' 

Ich möchte wie etwas tun:

label: 'Open', 
accelerator: 'CmdOrCtrl+O', 
role: 'open' 

Aber es gibt keine solche Rolle als ‚offen‘.

Wie kann ich ein On-Click-Ereignis implementieren, das den geöffneten Dateidialog öffnet?

main.js offene Datei Abschnitt:

const ipc = require('electron').ipcMain 
const dialog = require('electron').dialog 

ipc.on('open-file-dialog', function (event) { 
    dialog.showOpenDialog({ 
    properties: ['openFile', 'openDirectory'] 
    }, function (files) { 
    if (files) event.sender.send('selected-file', files) 
    }) 
}) 

index.js:

const ipc = require('electron').ipcRenderer 
const selectDirBtn = document.getElementById('open') 

selectDirBtn.addEventListener('click', function (event) { 
    ipc.send('open-file-dialog') 
}) 

ipc.on('selected-file', function (event, path) { 
    document.getElementById('selected-file').innerHTML = `► ${path}` 
    document.getElementById('selected-file2').innerHTML = `${path}` 
}) 

Antwort

1

ich zwei Knöpfe hatte, eine nicht sichtbare Eingabedatei und sichtbar gestylt Taste.

<input type="file" id="fileId" style="display:none;" /> 
<button class="btn-lg btn-primary center-block" type="button" 
    id="btnLoadFile">Load File</button> 

In den js, stelle ich die Veranstaltung gestylt Schaltfläche, um die Eingabedatei klicken Ereignis auszulösen.

document.getElementById('btnLoadFile').addEventListener("click", function(){ 
    document.getElementById('fileId').click(); 
}); 

Dann habe ich eine Änderungsereignis-Listener für das Element der Eingabedatei, die einige Operationen mit der Datei ausführt.

document.getElementById('fileId').addEventListener('change', function(e){ 
    //use the file here 
    var files = e.target.files; 
    var f = files[0]; { 
     var reader = new FileReader(); 
     var name = f.name; 
     reader.onload = function (e) { 
      console.log(e.target.result); 
     }; 
     reader.readAsBinaryString(f); 
    } 
}); 

Hoffnung, das hilft.

Verwandte Themen