2016-04-21 16 views
20

Electron'u öğreniyorum ve birden çok pencere ve IPC ile çalışıyorum. Ben, konsolundaVerileri Windows'ta Elektron'a Geçmek

$.getJSON("http://localhost:8080/stores/" + item.id).done(function(store) { 
    ipc.send('show-store-edit', store); 
}); 

:

var storeWindow = new BrowserWindow({ 
    width: 400, 
    height: 400, 
    show: false 
}); 

ipc.on('show-store-edit', function(event, store) { 
    console.log(store); 
    storeWindow.loadURL('file://' + __dirname + '/app/store.html'); 
    storeWindow.show(); 
}); 

Ve öncelikle pencerenin komut

, ben mağazaların listesini yapılan bir tıklama olayı içinde şu var: benim ana komut dosyasında ben şu var mağaza verilerini sunucudan yazdırıyorum. Belirsiz olduğum şey, bu verileri storeWindow:store.html benim görünümüme nasıl alacağımızdır. Ben doğru olayların sırasını hallediyorum bile emin değilim ama onlar olurdu:

  • sunucudan
  • olsun mağaza veri deposu verileri görüntülemek için
  • açık yeni pencere tıklama Düzenleme Mağaza

veya

  • tık Düzenleme Mağaza
  • açık yeni pencere İkinci sakladığınız verilere sunucudan

den

  • olsun mağaza verileri görüntülemek için, ben storeWindow's komut dosyasından mağaza getirmek için gerekli kimliği alacağı nasıl emin değilim.

  • +1

    Sen 'storeWindow.webContents kullanabilirsiniz: Eğer bir pencere sürecinde (renderer) bir dinleyici ihtiyaç

    // main process storeWindow.webContents.send('store-data', store); 

    bu olayı dinlemek için gönderiliyor: webContents bir pencere örneğinin bir özelliktir. Verileri belirli bir pencereye göndermek için (EVENT_NAME, ARGS) '([docs] (http://electron.atom.io/docs/v0.37.6/api/web-contents/#webcontentssendchannel-arg1-arg2-)). Ayrıca pencere işlemine bir dinleyici eklemelisiniz - 'ipcRenderer.on (EVENT_NAME, function (ARGS) {}); –

    +0

    bunu bir yanıt olarak verirseniz kabul edebilirim. – Gregg

    cevap

    21

    Belirli bir pencereye olay göndermek için webContents.send(EVENT_NAME, ARGS) (see docs) 'u kullanabilirsiniz.

    // renderer process 
    var ipcRenderer = require('electron').ipcRenderer; 
    ipcRenderer.on('store-data', function (store) { 
        console.log(store); 
    }); 
    
    +0

    'ipcRenderer 'nerede tanımlandı? – hackjutsu

    +3

    @Hackjutsu, elektron paketi ile sağlanmaktadır. Bunu şu şekilde içe aktarabilirsiniz: "var ipcRenderer =" ('electron') gerektirir. IpcRenderer; 'veya es6 'import {ipcRenderer}' electron ';' –

    +0

    Nice! Açıklamakta olduğunuz için teşekkür ederiz :) – hackjutsu