- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 ipcMain 和 ipcRenderer 进程( Electron 侧和 Angular 侧)。如何重写我的代码以异步接收来自主进程的数据?连接到数据库是使用 typeorm 完成的
渲染端(data.service.ts):
constructor(private _electronService: ElectronService) {}
getItems(): Observable<Item[]> {
return of(this._electronService.ipcRenderer.sendSync('get-items')).pipe(
catchError((error: any) => Observable.throw(error.json))
);
}
@Component({
selector: 'App',
template: `<div style="text-align:center">
<h1>
Welcome to {{ title }}!
</h1>
<h2>Here is the contents of the database: </h2>
<div>
<ul style="list-style: none">
<li *ngFor="let item of itemList">
{{ item.name }}
</li>
</ul>
</div>
</div>`
})
export class AppComponent implements OnInit {
itemList: Item[];
constructor(private appservice: AppService) {}
ngOnInit(): void {
console.log('component initialized');
this.appservice.getItems().subscribe((items) => (this.itemList = items));
}
import { app, BrowserWindow, ipcMain } from 'electron';
import { createConnection } from 'typeorm';
import { Item} from './assets/model/item.schema';
const createWindow = async () => {
const connection = await createConnection({
type: 'mssql',
host: 'server\\instance',
username: 'sa',
password: 'password',
port: 1433,
database: 'test',
synchronize: true,
logging: true,
entities: [ Item ],
});
const itemRepo = connection.getRepository(Item);
ipcMain.on('get-items', async (event: any, ...args: any[]) => {
try {
event.returnValue = await itemRepo.find();
} catch (err) {
throw err;
}
});
最佳答案
这对我有用:
data.service.ts( Angular )
import { Injectable } from '@angular/core';
import { IpcRenderer } from 'electron';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class DataService {
private ipc: IpcRenderer;
constructor() {
if ((<any>window).require) {
try {
this.ipc = (<any>window).require('electron').ipcRenderer
} catch (error) {
throw error;
}
} else {
console.warn('Could not load electron ipc');
}
}
getData() {
return new Observable<any>(observer => {
this.ipc.once('getDataResponse', (event, arg) => {
observer.next(arg);
});
this.ipc.send('getData');
});
}
}
import { app, BrowserWindow, ipcMain } from 'electron';
import * as path from 'path';
import * as url from 'url';
let win: BrowserWindow;
app.on('ready', createWindow)
app.on('activate', () => {
if (win === null) {
createWindow();
}
});
function createWindow() {
win = new BrowserWindow({
width: 800,
height: 600,
frame: false,
webPreferences: {
nodeIntegration: true // <-- important
}
});
win.loadURL(
url.format({
pathname: path.join(__dirname, `/../../dist/myApp/index.html`),
protocol: 'file:',
slashes: true,
})
);
win.webContents.openDevTools();
win.on('closed', () => {
win = null;
});
}
ipcMain.on('getData', (event, args) => {
event.reply('getDataResponse', {
data: [
{
name: 'test'
}
]
});
});
关于sql-server - 如何在 Electron ipcMain 和 angular ipcRenderer 之间与 observables 异步发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55742327/
我的渲染过程中有以下内容: class Component { findClosestComponent(c) { /* Do stuff */ } } class Item extends
您好,我正在使用 Electron 和 React 开发一个项目, 我在 react 端有一个表单,在提交时调用 ipcRenderer.on 一个 ipcRenderer.send 方法。 我在为表
我正在尝试使用 IPC 在我的 react 组件和主 Electron 过程之间进行通信。 In component : export default class A extends React.Co
我可以看到“来自渲染器的你好”警报,但看不到“来自渲染器的再见”警报。 在 Windows 10 中运行。 而且我看不到“已收到!”警报,我应该看到 ipcRenderer.on(...) 起作用了。
我有一个带有构造函数和异步函数的类。 我已经完成了module.exports这样我就可以从我的 GUI.js 调用我的类(class)文件和我的GUI.js文件,我需要那个类,一切正常。 但是在我的
我正在做我的第一个 Electron 应用程序-使用Git中的 Electron 快速启动代码。 我无法将事件从preload.js发送到main.js 我成功地将邮件从main.js发送到prelo
所以显然使用 remote 是一种不好的做法。 Electron 中的模块,他们正计划杀死它。他们说ipcRenderer应该使用模块。 但是ipc的东西是一个事件系统。 如果在预加载脚本中我需要从主
我正在(第一次)使用 Electron 创建一个仅限 Mac 的小型应用程序。 我正在尝试使用 ipcRenderer 在我的应用程序菜单和主 BrowserWindow 中的内容之间进行通信。 我将
我有一个使用 Electron、React 和 React Router 的应用程序。我在组件构造函数中使用 ipcRenderer 将事件从组件发送到主 Electron 进程。将 React Ro
我正在使用 Electron + Vue 来构建我的应用程序。我向主进程发送一条消息以创建一个新窗口。在 main 的方法中,我试图将消息传递给新创建的窗口,但它不起作用。 我在主浏览器窗口中的 Ho
在我的主机应用程序中,我有一个按钮,单击该按钮后,会将数据连同数据一起发送到我的 Angular 应用程序。像这样: Send Some Data 组件: onClick() { ipcRender
我正在尝试做一个简单的 ipc.send 和 ipc.on 但由于某种原因我在这个 Electron 需求上变得不确定。 库/自定义菜单.js: 'use-strict'; const Browser
我想知道如何在 Electron 应用程序上通过 ipcRenderer 发送多个参数。我应该发送一个参数数组还是只发送用逗号分隔的所有参数? 谢谢, 最佳答案 我会推荐一个用于参数传输的对象。因此,
我正在尝试了解 Electron 主进程和渲染器进程之间的通信。文档 https://github.com/electron/electron/blob/master/docs/api/remote.
我正在使用 Electron 在我的 Ionic React 应用程序上制作桌面版本。我已经决定闪屏只会在 React 应用程序说它可以消失时才会消失。 在 index.ts (主要的 Electro
嗨,我是从ipcRenderer.send()文件中调用index.html的。 我想做的是将函数调用延迟5秒。但是,它似乎不起作用。 这实际上是我想要做的:setTimeout(ipcRendere
这是情况。 可通过main.js中的nodejs(node-adodb)直接访问该数据库。我的Angular应用发送请求并从db.service接收sql结果。这部分工作正常,但是如果我有一个类似ge
我正在尝试将消息从模式发送回浏览器窗口,以便使用从模式返回的数据更新它。 模态有一个表格,当您点击一行时,行 ID 通过 ipcRenderer 消息发送,但消息似乎没有到达那里,因为控制台中没有记录
我正在用 Electron js 编写一个桌面应用程序,我想将数据从我的主进程发送到我的渲染器进程,反之亦然。为此,我使用 ipcMain和 ipcRenderer ,但很奇怪,同时能够通过我的渲染器
使用 Electron、React (es6/jsx)、sass、pouchdb 和 webpack 2 设置。我无法导入或需要 ipcRenderer 来使主进程和渲染器进程之间的通信成为可能。我的
我是一名优秀的程序员,十分优秀!