91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在使用Vue的情況下實現Electron打開文件保存對話框?

發布時間:2020-07-17 14:57:18 來源:網絡 閱讀:1472 作者:BlueMiaomiao 欄目:web開發

一、問題場景

最近是在使用Electron+Vue構建一個基于modbus rtu協議的上位機應用,使用ipcMain和ipcRenderer實現點擊Vue組件后打開對話框,獲取到文件路徑并寫入數據,完成后通知。但是出現ipcRenderer.on() 調用多次的錯誤情況。
那么,使用Electron+Vue實現文件保存的正確姿勢是什么呢?

二、具體實現

在electron的src/main/index.js中定義IPC通道

// 1. 引入對話框與IPC通信模塊
const ipc = require('electron').ipcMain
const dialog = require('electron').dialog

// 2.定義IPC主進程響應函數
ipc.on('open-save-chart-dialog', function (event) {
    dialog.showSaveDialog({
        title: '保存圖像文件',
        defaultPath: '/',
        filters: [
            {
                name: 'Images',
                extensions: ['png', 'jpg']
            }
        ]
    }, function (filename) {
      // 通知渲染進程,將獲取到的文件路徑傳給Vue組件中響應函數
      event.sender.send('save-finished', filename);
    })
})

在Vue的組件中定義觸發函數和響應函數,這里是MainPage.vue

(1)首先為Button綁定Click點擊事件:

<Button type="info"  @click="handleSaveChart">保存</Button>

(2)接下來在script代碼塊的methods中定義handleSaveChart方法

export default {
    methods: {
        handleSaveChart: function () {
                // 向IPC通道發送信號,此時主線程收到信號立即執行相對應的響應函數
                const ipc = require('electron').ipcRenderer;
                ipc.send('open-save-chart-dialog');
          }
        }
}

(3)在Vue組件的created方法中定義主線程向渲染線程發送信號的響應函數

created() {
     const ipc = require('electron').ipcRenderer;
     ipc.on('save-finished', function (event, filename) {
         // 當filename等于null的時候表示用戶點擊了取消按鈕
         // 當用戶點擊保存按鈕的時候filename的值是對應文件的絕對路徑
         console.log(filename)
      })
}
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长治市| 宁海县| 吴堡县| 西林县| 育儿| 前郭尔| 义马市| 汕头市| 自治县| 香河县| 泸西县| 江门市| 敦化市| 海淀区| 资阳市| 锦州市| 成都市| 肃北| 依安县| 万源市| 潼关县| 新乡市| 新宁县| 那曲县| 唐山市| 武强县| 山阴县| 饶阳县| 高陵县| 宾川县| 开阳县| 惠来县| 南通市| 通榆县| 手机| 永登县| 东阿县| 启东市| 清涧县| 永兴县| 砚山县|