首页 > 解决方案 > Electron 的 showOpenDialog 中的过滤器仅返回数组中的第一个对象

问题描述

const getFile = () => {
  const files = dialog.showOpenDialog({
    properties: ['openFile'],
    filters: [
      { name: 'Markdown', extensions: ['md', 'mdown', 'markdown'] },
      { name: 'Text', extensions: ['txt', 'text'] },
    ],
  });

对于我的过滤器,该应用程序仅使用第一个对象作为正确的过滤器。例如,当首先列出降价时,我只能选择降价文件,而当首先列出文本对象时,我只能选择文本文件。根据文档,我应该能够像这样创建过滤器

{
  filters: [
    { name: 'Images', extensions: ['jpg', 'png', 'gif'] },
    { name: 'Movies', extensions: ['mkv', 'avi', 'mp4'] },
    { name: 'Custom File Type', extensions: ['as'] },
    { name: 'All Files', extensions: ['*'] }
  ]
}

我错过了什么?

标签: javascriptelectron

解决方案


Electron 对话过滤器对象将过滤器作为具有文件扩展名数组的过滤器对象数组。当我们添加多个过滤器对象时,它会显示为具有已定义过滤器对象名称的过滤器列表。作为简单的下拉绑定。

例如 -

示例 1 -当我们使用下面的过滤器对象“过滤器”时 -

const openDialogOptions: OpenDialogOptions = {
      defaultPath: '',
      filters: [
        { name: "All Files", extensions: ["*"] },
        { name: 'Word Template', extensions: ["dot", "dotx"] },
        { name: 'Word Document', extensions: ["doc", "docx"] },
        { name: 'MS Perfect', extensions: ["wpt"] }],
      properties: ['openFile']
    }

它在下拉列表中绑定过滤器列表,如下所示 -

在此处输入图像描述

示例 2 -当我们使用下面的过滤器对象“过滤器”时 -

const openDialogOptions: OpenDialogOptions = {
      defaultPath: '',
      filters: [
        { name: 'Word Template', extensions: ["doc", "docx","dot", "dotx"] },
        { name: 'MS Perfect', extensions: ["wpt"] }],
      properties: ['openFile']
    }

它在下拉列表中绑定过滤器列表,如下所示 -

在此处输入图像描述


推荐阅读