我正在学习电子,并使用多个窗口和IPC.在我的主要脚本中,我有以下内容:
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(); });
在我主要的窗口脚本中,我在商店列表中的点击事件中有以下内容:
$.getJSON("http://localhost:8080/stores/" + item.id).done(function(store) { ipc.send('show-store-edit',store); });
在控制台上,我正在从我的服务器打印商店数据.我不清楚的是如何将数据存入我的storeWindow视图中:store.html.我甚至不确定我正在正确处理事件的顺序,但他们会:
>单击编辑商店
>从服务器获取存储数据
>打开新窗口来显示商店数据
要么
>单击编辑商店
>打开新窗口来显示商店数据
>从服务器获取存储数据
在后者中,我不知道如何从storeWindow的脚本中获得从存储器获取的ID.
要将事件发送到特定窗口,您可以使用webContents.send(EVENT_NAME,ARGS)(
see docs). webContents是窗口实例的属性:
// main process storeWindow.webContents.send('store-data',store);
要监听正在发送的事件,您需要一个窗口进程中的监听器(渲染器):
// renderer process var ipcRenderer = require('electron').ipcRenderer; ipcRenderer.on('store-data',function (store) { console.log(store); });