我目前在这里有这段代码:
let loginWindow = Object.assign({}, EventEmitter.prototype, {
window: null,
create: () => {
// Load LoginWindow Settings
Settings.get("loginWindowState")
.then((state) => {
if (state === undefined) state = {};
loginWindow.window = new BrowserWindow({
x: state.x || 0,
y: state.y || 0,
width: state.width || 600,
height: state.height || 700,
frame: false,
show: false
});
if (_.isEmpty(state)) {
loginWindow.window.center();
}
if (state.maximized) {
loginWindow.window.maximize();
}
loginWindow.window.loadURL(`file://${__dirname}/../views/index.html`);
loginWindow.window.on('closed', () => { loginWindow.window = null; });
loginWindow.window.on('ready-to-show', () => loginWindow.window.show());
loginWindow.window.on('move', rememberWindowState);
loginWindow.window.on('resize', rememberWindowState);
loginWindow.window.on('maximize', rememberWindowState);
loginWindow.window.on('unmaximize', rememberWindowState);
});
loginWindow.emit("created");
},
close: () => {
loginWindow.window.close();
}
});
我正在使用它来控制Electron
项目中的窗口,尽管我似乎误解了它的构造。
没有this
或至少它在运行时返回undefined,我也不能说
loginWindow.emit("created")
从自身内部进行,但是如果我要创建对象并从外部进行操作,它将很好地工作
我想在创建时使用事件发射器,但是我已经替换了 loginWindow.emit("created");
和
return Promise.resolve(true);
现在我知道创建它的时间,但是我觉得我应该能够代替它使用事件发射器。
Object.assign
确实不是为此目的而设计的。而且,箭头功能,不绑定自己的this
,arguments
,super
,或new.target
。这就是它返回undefined
给您的情况的原因。无论如何,这是我的推荐方法。
let loginWindow = new class extends EventEmitter{
constructor(){
super();
this.window = null;
}
create(){
// Load LoginWindow Settings
Settings.get("loginWindowState")
.then((state) => {
if (state === undefined) state = {};
loginWindow.window = new BrowserWindow({
x: state.x || 0,
y: state.y || 0,
width: state.width || 600,
height: state.height || 700,
frame: false,
show: false
});
if (_.isEmpty(state)) {
this.window.center();
}
if (state.maximized) {
this.window.maximize();
}
this.window.loadURL(`file://${__dirname}/../views/index.html`);
this.window.on('closed', () => { loginWindow.window = null; });
this.window.on('ready-to-show', () => loginWindow.window.show());
this.window.on('move', rememberWindowState);
this.window.on('resize', rememberWindowState);
this.window.on('maximize', rememberWindowState);
this.window.on('unmaximize', rememberWindowState);
});
this.emit("created");
}
close(){
this.window.close();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句