在挂接的钩子中,我具有以下匿名功能:
window.onkeydown = function(evt) {
evt = evt || window.event;
var isEscape = false;
if ("key" in evt) {
isEscape = evt.key === "Escape" || evt.key === "Esc";
} else {
isEscape = evt.keyCode === 27;
}
if (isEscape) {
this.$emit("close");
}
};
但是,当按下esc
按钮时,出现以下错误:
app.js:2033 Uncaught TypeError:this。$ emit不是一个函数 在window.onkeydown(app.js:2033)
我该如何解决?
答案 0 :(得分:3)
function关键字为此创建了一个新的上下文。要在函数中使用此关键字,可以bind,将其分配给var self = this
之类的另一个变量,也可以使用不创建新上下文的箭头函数。
window.onkeydown = evt =>
{
evt = evt || window.event;
var isEscape = false;
if ("key" in evt) {
isEscape = evt.key === "Escape" || evt.key === "Esc";
} else {
isEscape = evt.keyCode === 27;
}
if (isEscape) {
this.$emit("close");
}
};