Как отправить данные из одного окна Electron в другое с помощью ipcRenderer, используя vuejs? - PullRequest
0 голосов
/ 12 февраля 2019

У меня в одном компоненте это:

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".У меня нет идей.

Я вижу, что это работает только в родительском компоненте для компонента, откуда произошел этот выброс, если я сделаю это:

  1. send
  2. прослушать в основном процессе
  3. отправить обратно на event.sender

Итак, вопрос в том, как передать любую форму данных из одного окна в другое?

1 Ответ

0 голосов
/ 12 февраля 2019

Хорошо, после долгой ночи, утром после решения.

  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);
    });
}
...