gpt4 book ai didi

javascript - 在 ember 中获取 Uncaught Error

转载 作者:行者123 更新时间:2023-11-30 08:23:00 25 4
gpt4 key购买 nike

当我为某些任务执行右键单击选项超过 5(大约)次时,它显示 Uncaught Error ,如下所示:

Uncaught TypeError: Cannot read property 'find' of undefined
at Class.<anonymous> (core.js:21487)
at fn (core.js:7779)
at DeferredActionQueues.flush (core.js:7723)
at Backburner.end (core.js:7738)
at Backburner.run (core.js:7748)
at executeTimers (core.js:7824)
at core.js:7822

在那个地方我有下面的代码:

Ember.run.later(view, function () {
this.$().find('menu-item:eq(0)').focus();
}, 125);

谁能告诉我为什么会出现这个错误,我需要在右键单击任务“n”次的同时避免这个错误。我是 Ember 的新手。您的帮助将不胜感激。提前致谢。

最佳答案

这是一个简单的 JavaScript 问题。在第二行 this.$() 返回 undefined,所以它不能在 undefined 上调用 .find

更有趣的是为什么 this.$() 是未定义的。可能你在一个组件中有这段代码,并尝试访问本地 jQuery instance .但是,您在匿名 function(){} 中调用它,这会破坏您的 this 上下文(因为它获得了一个新上下文)。

这里最好的解决方案是使用箭头函数:

Ember.run.later(view, () => {
this.$().find('menu-item:eq(0)').focus();
}, 125);

这阻止了外部 this 上下文,这很好。另一种选择是保存这个:

const self = this;
Ember.run.later(view, function () {
self.$().find('menu-item:eq(0)').focus();
}, 125);

或者你可以.bind(this):

Ember.run.later(view, (function () {
this.$().find('menu-item:eq(0)').focus();
}).bind(this), 125);

我绝对可以推荐第一个选项,尤其是在使用 ember(-cli) 时,它无论如何都会为您提供转译。

关于javascript - 在 ember 中获取 Uncaught Error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50366758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com