【发布时间】:2017-05-04 16:20:25
【问题描述】:
我对 Electron 还很陌生,目前正在构建一个小型应用程序,该应用程序重用了我前段时间构建的 Angular 应用程序中的一些代码。
这是我想要做的事情:我有一个主 BrowserWindow(正在填充来自我使用 angular 访问的 web 服务的数据),当用户单击其中一个按钮时,我想打开另一个 BrowserWindow 并显示其中的一些数据(数据与用户点击的内容有关)。我想出了如何很好地打开另一个 BrowserWindow 以及如何将一些参数传递给它,请参见下面的代码示例。
当用户点击按钮时,这段代码正在执行,一个新的浏览器窗口打开。
const BrowserWindow = remote.BrowserWindow;
var cubeWindow = new BrowserWindow({ width: 800, height: 600, frame: false });
var cube = path.resolve(__dirname, '../cube.html');
cubeWindow.loadURL(cube);
var data = {
id: "1",
name: "this"
};
cubeWindow.webContents.on('did-finish-load', ()=> {
cubeWindow.webContents.send('cube-data', data);
})
这里我访问新打开的 BrowserWindow 中的数据(这个 javascript 文件在 cube.html 中引用):
require('electron').ipcRenderer.on('cube-data', (event, message) => {
console.log(message);
});
数据对象的内容正在新的 BrowserWindow 中记录,到目前为止一切顺利。现在我的问题是:如何访问在 cube.html 中运行的 Angular 应用程序/控制器中的数据对象?
我试过这样做,但是没用:
var data;
require('electron').ipcRenderer.on('cube-data', (event, message) => {
console.log(message);
data = message;
});
angular.module('testApp', [])
.controller('appCtrl', function($scope) {
$scope.data = data;
console.log('Data: ' + $scope.data);
});
来自 Angular 控制器的日志条目显示数据未定义,我认为这是因为控制器实际上是在 ipcRenderer 发送/接收消息之前评估的?
有没有办法在 Angular 中访问发送的消息?
【问题讨论】:
标签: javascript angularjs electron