Отправить данные процессу рендерера - PullRequest
0 голосов
/ 21 апреля 2019

Я использую "electron": "^4.1.4", и я получаю свои данные через knex из базы данных sqlite3.

Я пытался отправить данные через вызов ipcMain.Найдите ниже мой main.js

const {
  app,
  BrowserWindow,
  ipcMain
} = require('electron')

// require configuration file
require('dotenv').config()

// database
const knex = require('./config/database')

// services
const {
  ScheduledContent
} = require('./service/ScheduledContent')

require('electron-reload')(__dirname);

let mainWindow

const contentService = new ScheduledContent(knex)
ipcMain.on('content-edit', async (e, args) => {
  console.log("content-edit - Backend");
  let res = await contentService.getAllContent()
  event.sender.send('content-edit-res', res)
})

function createWindow() {
  mainWindow = new BrowserWindow({
    width: 1000,
    height: 600,
    webPreferences: {
      nodeIntegration: true
    }
  })

  // and load the index.html of the app.
  mainWindow.loadFile('./public/index.html')

  mainWindow.on('closed', function () {
    mainWindow = null
  })
}

app.on('ready', createWindow)

app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') app.quit()
})

app.on('activate', function () {
  if (mainWindow === null) createWindow()
})

Мой renderer.js выглядит следующим образом:

const {
    ipcRenderer
} = require('electron')

console.log("loaded renderer.js 123")


document.addEventListener('DOMContentLoaded', pageLoaded);

function pageLoaded() {
    console.log('The page is loaded');
    ipcRenderer.send('content-edit', 'x')
}

ipcRenderer.on('content-edit-res', (event, arg) => {
    console.log(arg)
})

Я пытался получить данные во внешнем интерфейсе при загрузке страницы, затем яхотел добавить его к моему <table id="table1"> -тэгу в моем index.html

Однако я не получаю никаких данных во внешнем интерфейсе.

Есть предложения, что я делаю неправильно?

Я ценю ваши ответы!

1 Ответ

1 голос
/ 21 апреля 2019

На данный момент проблема с кодом ...

 // event in receive, not e... 
 ipcMain.on('content-edit', async (event, args) => {
   console.log("content-edit - Backend");
   let res = await contentService.getAllContent()
   event.sender.send('content-edit-res', res)
 })

Но, в качестве дополнительной информации, вы также можете отправлять данные процессу рендеринга с webContents окна.

 const BrowserWindow = electron.BrowserWindow;
 let win = new BrowserWindow(<your configs>);
 win.webContents.send('message', 'Hello from main!');

Вы можете найти полезную информацию здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...