首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何在电子的工控机上使用showOpenDialog?

我如何在电子的工控机上使用showOpenDialog?
EN

Stack Overflow用户
提问于 2021-12-13 08:23:47
回答 1查看 793关注 0票数 2

在我的电子应用中,我正在学习没有remote的生活。我已经到了需要从渲染器打开一个文件的地步,据我了解,这需要主进程来显示文件对话框并返回结果。

在我的main.js中,我有以下内容:

代码语言:javascript
运行
复制
ipcMain.on('open-file',(event,data)=>{
    dialog.showOpenDialog(null, data, (filePaths) => {
        event.sender.send('open-file-paths', filePaths);
    });
});

在我的呈现过程(我称之为pager.js )中,我有以下内容:

代码语言:javascript
运行
复制
ipcRenderer.send('open-file',{
    title: 'Title',
    defaultPath: localStorage.getItem('defaultPath')
});
ipcRenderer.on('open-file-paths',(event,data)=>{
    console.log(event);
    console.log(data);
});

文件打开对话框运行良好,但我不知道如何获得结果。ipcRenderer.on('open-file-paths',…)没有被调用,所以这显然不是正确的方法。我希望得到所选的路径或取消的消息。

如何在呈现过程中获得showOpenDialog的结果?

EN

回答 1

Stack Overflow用户

发布于 2021-12-13 09:23:17

好吧,我想我知道了。

感谢ShowOpenDialog not working on recent versions of electron-js中的一个答案,我看到showOpenDialog现在返回一个承诺,这意味着在main.js中重新处理代码。以下是一个可行的解决方案:

代码语言:javascript
运行
复制
//  main.js
    ipcMain.on('open-file',(event,data)=>{
        dialog.showOpenDialog(null, data).then(filePaths => {
            event.sender.send('open-file-paths', filePaths);
        });
    });

//  pager.js (render)
    ipcRenderer.send('open-file',{
        title: 'Title',
        defaultPath: localStorage.getItem('defaultPath')
    });
    ipcRenderer.on('open-file-paths',(event,data)=>{
        console.log(`Canceled? ${data.canceled}`);
        console.log(`File Paths: ${data.filePaths.join(';')`);
    });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70331707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档