【问题标题】:ACE editor "Cannot read property 'getValue' of undefined"ACE 编辑器“无法读取未定义的属性‘getValue’”
【发布时间】:2019-07-10 11:59:01
【问题描述】:

我目前正在 Angular 中构建一个降价编辑器。

可以在此处找到代码框:https://codesandbox.io/embed/angular-91d27


问题是我正在尝试获取当前值以便进一步使用它。 这个概念是,只要代码发生变化 (onChange()),内容就会被放入 Angular 服务中。

出于测试目的,我想打印 onChange 的当前内容。

this.codeEditor.on("change", function(e) {
    const code = this.codeEditor.getValue();
    console.log(code);
});

现在每当我输入某些内容时,我都会收到以下错误:

ERROR TypeError: Cannot read property 'getValue' of undefined

如果有人在此之前遇到过这种情况,我会很高兴得到一些帮助。
另外我想知道这是否是处理此问题的“正确方法”,或者是否有更好的选择。

【问题讨论】:

  • 你是如何获得代码编辑器实例的?是打字稿吗?如果是的话,你能评论一下吗?

标签: javascript angular typescript ace-editor


【解决方案1】:

每个新函数都定义了自己的this 范围。尝试改用arrow functions。箭头函数在词法上绑定它们的上下文,所以 this 实际上是指原始上下文。

this.codeEditor.on("change", (e) => {
    const code = this.codeEditor.getValue();
    console.log(code);
});

【讨论】:

  • 所以在原始版本中它看起来像是新函数中的getValue() 方法?因为this 指的是新功能。一个箭头函数不会创建它自己的范围。哇谢谢。现在接受不了。但我会尽快的。
  • 不客气。如果此答案对您有所帮助,请将其标记为正确答案:)
  • 这个问题太新了。我会尽快的。
  • 谢谢。很高兴我能帮上忙:)
猜你喜欢
  • 2016-12-21
  • 1970-01-01
  • 2012-06-08
  • 2019-02-01
  • 2021-10-05
  • 2017-12-30
  • 1970-01-01
  • 2021-04-23
  • 2020-10-12
相关资源
最近更新 更多