0

我有一个组件:

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我在setTimeout 中尝试过,但没有任何效果created()beforeCreate()this.$nextTick(), with

我不想发送一些字符串数据而是对象,但正如您所见,事件简单字符串不起作用"data"。我没主意了。

我可以看到,如果我这样做,这仅适用于发出来自的组件的父组件:

  1. 发送
  2. 在主进程中收听
  3. 寄回event.sender

那么,问题是如何将任何形式的数据从一个窗口传递到另一个窗口?

4

1 回答 1

0

好的,经过漫长的夜晚,解决后的早晨。

  1. 在一些 vuejs 组件中,例如对按钮单击的一些操作

ipcRenderer.send('chanel', someData);

  1. 在主进程中

    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);
       });
    })
    
  2. 在其他路由的 vuejs 组件中arg.url

    mounted() {
        ipc.on('chanel', (event, message) => {
           console.log(message);
           console.log(event);
        });
    }
    
于 2019-02-12T10:24:24.303 回答