ionic-framework - 在 ipcRenderer.on 事件处理程序中设置全局变量在电子上运行离子不起作用
问题描述
这是我在 home.ts 中的代码,用于从主进程接收值
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
declare var electron : any;
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
arguments: any="ping";
constructor(public navCtrl: NavController) {
}
ionViewDidLoad() {
electron.ipcRenderer.send("test_channel","ping");
electron.ipcRenderer.on("test_channel", function (err,arg) {
this.arguments=arg; // receive new value "pong" from main.js
console.log("Message received from electron: "+arg); // works fine
});
console.log("Message received from electron: "+this.arguments); //does not work, still default value
};
}
这是在我的 main.js 代码中添加的,它可以从渲染进程接收事件
var ipcMain = require('electron').ipcMain;
mainWindow.webContents.openDevTools();
ipcMain.on("test_channel",function(err,arg){
console.log(err);
console.log("Received message: "+arg);
global.sharedObj = {prop1: arg};
console.log("Sending message back!");
// Send message back!
mainWindow.webContents.send("test_channel",arg+'yeah');
})
这是在我的 index.html 中添加的,以使其为 ionic 运行
<script>
const electron = require('electron');
</script>
解决方案
首先不要重复消息名称。并在 main.js 中,使用 event.sender.send 将事件请求发送到渲染器进程,如下所示:-
ipcMain.on('message_name', (event,args) => {
event.sender.send('message_name_2', args)
});
推荐阅读
- python - Killing a Function
- javafx - Proper way to add nodes using loop
- excel-formula - Subtotal with 2 criteria
- opencv - findChessboardCorners does not work in opencv 4.5.2 python
- javascript - 减少 if else javascript 中的一些行
- azure - Azure 数据资源管理器具有流式传输的高摄取延迟
- node.js - npm install and ng serve taking CPU to 100%
- javascript - Windows Defender slowing down Electron startup
- reactjs - How to display banner images using react-multi-carousel in react?
- mysql - Is there a way to find a whether a string in one database table is a substring of another string in a different table of the same database in MySQL?