2016-12-15 142 views
0

我打開電子打開的對話框傳回的數據:從電子功能

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

var browsedFile = dialog.showOpenDialog({properties: ['openFile' ], filters: [{name: 'Scripts', extensions: ['sh']}]}); 

我必須聲明如下

function readFileAsString(filePath, functionCallback) { 

    var fs = require('fs'); 
    fs.readFile(filePath, 'utf8', function (err, data) { 
    functionCallback(err, data); 
    }); 

} 

exports.readFileAsString = readFileAsString; 

然後我打電話的電子功能,通過在電子功能回調函數

var openScriptFile = electron.remote.require('./main.desktop').readFileAsString; 
openScriptFile(filePath, this.afterOpenScriptFileCallback); 

裏面的回調函數,我試圖訪問該組件變量通過this.myVar,但他們沒有定義,大概超出了範圍?

afterOpenScriptFileCallback(err, data) { 
    if(err){ 
     console.log('error opening file: ', err); 
    } else { 
     this.myVar = data; 
    } 
} 

如何從Electron的回調內部訪問this.myVar變量?

回答

1

首先擺脫electron.remote.require,實際上有意義的情況很少,只需使用常規require即可。

,那麼你可能需要做出這種改變:

openScriptFile(filePath, this.afterOpenScriptFileCallback.bind(this)) 

我建議你通過How does the "this" keyword work?看明白這是怎麼回事的。

+0

謝謝!我讀過關於「綁定」的內容,但是在錯誤的地方使用它。 – ScottN