覆盖保存文件后,Electron窗口重新加载

3

我已经编写了保存功能,第一次保存文件时它完全按照预期工作。然而,如果我尝试通过再次保存来覆盖该文件,则文件会成功保存,但窗口会重新加载并清除所有已输入的数据。我可以加载保存的文件并继续编辑,但这将很快变得令人烦恼。我无法找到任何有关如何解决此问题的信息。任何帮助都将不胜感激。

function saveData(){
  let data = {}
  data.item1 = getItem1()
  data.item2 = getItem2()
  data.item3 = getItem3()
  // convert data object to a string
  let dataString = JSON.stringify(data, null, 4)
  // open save dialog and chooses path
  let savePath = dialog.showSaveDialog({filters: [{name: 'Save File', extensions: ['json']},]})
  // save file to disk
  if (savePath != undefined){
    fs.writeFile(savePath, dataString, function(err) {
    // file saved or err
    })
  }
}

这里是菜单模板的入口:

{ label: 'File',
  submenu: [
    { label: 'New', click: SendEvent('file-new')},
    { label: 'Open', click: SendEvent('file-open')},
    { label: 'Save', accelerator: 'CmdOrCtrl+S', click: function(){
            saveData();
      }
    },

    { label: 'Save As',
        accelerator: 'CmdOrCtrl+Shift+S',
        click: SendEvent('file-save-as')},
    { label: 'Close', click: SendEvent('file-close')},
    { type: 'separator'},
    { label: 'Quit', accelerator: 'CmdOrCtrl+Q', click: function() {app.quit();}},
    { type: 'separator' },
    { label: 'Print', accelerator: 'CmdOrCtrl+P', click(){win.webContents.print({silent: false, printBackground: false})} }
    ]
},

而getItem1函数:

function getItem1(){
    const item1 = document.getElementById('itemID').src
    return item1
}

1
你的 HTML 中有 <form> 吗? - user5734311
1
不,我只是使用document.getElementById()收集数据。 - xmattx
1
我猜这可能与文件替换有关。 - xmattx
1
那么明确一点,如果在第二次保存时不覆盖文件,窗口就不会重新加载吗? - user5734311
1
只有在我尝试使用相同的文件名重新保存文件时才会发生这种情况。如果我给它一个新名称,它就很好用。 - xmattx
显示剩余3条评论
1个回答

10

现在我感觉有点傻。原来它一直在重新加载是因为我使用了electron-reload包,以便在保存源文件时自动重新加载页面。这也导致当保存的文件被覆盖时,页面重新加载。往后知道就好了。

编辑:

你可以通过修改require语句来告诉electron-reload忽略某个目录,像这样:

require('electron-reload')(__dirname, {ignored: /<folder_to_be_ignored>|[\/\\]\./});

https://github.com/yan-foto/electron-reload#api


在不知道是什么触发了刷新的情况下,我在这里停留了1个小时。谢谢! - Bernd Loigge
在不知道是什么触发了刷新的几个小时后,我来到了这里。非常感谢! - thecOdemOnkey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接