2016-12-15 115 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