$emit 不适用于匿名函数
$emit does not work from an anonymous function
在挂载的钩子中我有以下匿名函数:
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 is not a function
at window.onkeydown (app.js:2033)
我该如何解决这个问题?
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");
}
};
在挂载的钩子中我有以下匿名函数:
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 is not a function at window.onkeydown (app.js:2033)
我该如何解决这个问题?
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");
}
};