dialog.showSaveDialog ничего не возвращает - PullRequest
2 голосов
/ 09 января 2020

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

Я следовал документам, а также проверил некоторые учебники, код точно такой же, но, по-видимому, в моем случае, когда я открываю диалоговое окно, выбираю местоположение и нажимаю «Сохранить», я не получаю никакого ответа в обратном вызове метода dialog.showSaveDialog.

Извините, если это ошибка noob, я только начинаю Electron.

Вот мой код:

const { dialog } = require('electron').remote

const createBtn = document.getElementById('create_btn')

createBtn.addEventListener('click', async () => {
  console.log('First Response: ', await dialog.showSaveDialog())

  dialog.showSaveDialog(path => {
    console.log('Second Response: ', path)
  })
})

А вот полный журнал консоли:

First Response:  {}

Редактировать: я также попробовал этот метод, согласно последним документам. Но не повезло!

const { dialog } = require('electron').remote

const createBtn = document.getElementById('create_btn')

createBtn.addEventListener('click', async () => {
  dialog.showSaveDialog({}).then((result) => {
    console.log('Second Response: ', result)
  }).catch((...args) => {
    console.warn('failed/rejected with', args)
  })
})

Электрон: v7.1.8

Ответы [ 2 ]

2 голосов
/ 09 января 2020
const { dialog, app } = require('electron')

...
const options = {}; // You can set this as your need
const result = await dialog.showSaveDialog(mainWindow, options);

Вы можете установить browserWindow в качестве firstParameter, который будет установлен в качестве родителя этого диалога, а следующий - в качестве secondParameter. Вы можете проверить, какие опции доступны в учебных документах или электронном руководстве.

Проверьте это: https://electronjs.org/docs/api/dialog#dialogshowsavedialogbrowserwindow -опции

2 голосов
/ 09 января 2020

Я подозреваю, что вам просто нужно нажать на {} в консоли, чтобы расширить результат;)

Вот Electron Fiddle , демонстрирующий showSaveDialog.


// renderer.js
const { dialog } = require('electron').remote;

const outEl = document.getElementById('output');
function log(...args) {
  console.log(...args);
  outEl.innerText += args.join(' ');
}

const buttonEl = document.getElementById('save');
buttonEl.addEventListener('click', async () => {
  const dialogOptions = {};
  try {
    const result = await dialog.showSaveDialog(dialogOptions);
    log('Save resolved:', result);
    const { filePath } = result;
    log('filePath -->', filePath);
  } catch (e) {
    log('Save failed:', e)
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...