Как отправить данные из одного окна Electron в другое с помощью ipcRenderer, используя vuejs?
У меня есть в одном компоненте это:
openNewWindow() {
let child = new BrowserWindow({
modal: true,
show: false,
});
child.loadURL('http://localhost:9080/#/call/' + this.chatEntityId + '?devices=' + JSON.stringify(data));
child.on('close', function () { child = null; });
child.once('ready-to-show', () => {
child.show();
});
child.webContents.on('did-finish-load', () => {
console.log("done loading");
ipcRenderer.send('chanel', "data");
});
}
А затем в дочернем окне компонента:
mounted() {
ipc.on('chanel', (event, message) => {
console.log(message);
console.log(event);
});
}
Я пробовал это .on
в created()
а также beforeCreate()
и с this.$nextTick(), with
setTimeout` но ничего не работает.
Я не хочу отправлять некоторые строковые данные, но объект, но, как вы можете видеть, не простая строка события "data"
работает. У меня нет идей.
Я вижу, что это работает только в родительском компоненте для компонента, откуда произошел этот выброс, если я сделаю это:
- Отправить
- слушать в основном процессе
- отправить обратно
event.sender
Итак, вопрос в том, как передать любую форму данных из одного окна в другое?
1 ответ
Хорошо, после долгой ночи, утро после решения.
- В некоторых компонентах vuejs некоторые действия при нажатии кнопки, например
ipcRenderer.send('chanel', someData);
В основном процессе
ipcMain.on('chanel', (event, arg) => { let child = new BrowserWindow() // other stuff here child.loadURL(arg.url) child.on('show', () => { console.log("done loading"); child.webContents.send('data', arg); }); })
В vuejs компонент для другого маршрута
arg.url
mounted() { ipc.on('chanel', (event, message) => { console.log(message); console.log(event); }); }