类型错误:this.getResults(...) 未定义

卡罗尔·卡尔

我已经实现了一个 javascript 类,我正在使用它this.loadResults('cpu').bind(this)来加载一个特定的结果,它可以根据字符串进行区分 - 例如cpuother- 输入。

在下面找到一个最小可行的例子:

import $ from 'jquery';

//class Builder {
constructor() {
  this.events();
}

events() {
  $(".btn.btn-primary.btn-sm").on("click", this.ourClickDispatcher.bind(this));
}

// methods
ourClickDispatcher(e) {
  var currentButton = $(e.target).closest(".btn.btn-primary.btn-sm");

  if (currentButton.data('exists') == 'cpu') {
    this.loadResults('cpu').bind(this)
  }

  if (currentButton.data('exists') == 'other') {
    this.loadResults('other').bind(this)
  }
}

loadResults(part) {
  console.log(`loadResults ${part} clicked`)
  //result logic ...
}
//}

//export default Builder;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button type="button" data-exists="cpu" class="btn btn-primary btn-sm">
                                            CPU
                                        </button>

当我在 Firefox 中运行脚本时,我收到以下错误消息:

TypeError: this.loadResults(...) is undefined[Learn More]  scripts-bundled.js:26481:9
    ourClickDispatcher https://link.com/js/scripts-bundled.js:26481:9
    bound ourClickDispatcher self-hosted:915:17
    jQuery.event.dispatch https://link.com/js/scripts-bundled.js:5274:16
    jQuery.event.add/elemData.handle

为什么我收到此错误的任何建议?

我感谢您的回复!

来自

我还不确定,但为了确认,当您将 'this' 绑定到 this.loadResults('cpu') 时,我假设 loadResults 应该返回一个函数。是否可能返回 undefined 因为您不打算让它返回某些东西?

我可以问你为什么将'this'绑定到loadResults的返回值吗?也许您根本不需要那里的绑定,因为您正在调用 loadResults 方法样式。即使没有绑定“this”,loadResults 也可以访问“this”

写对我来说没有意义

this.loadResults('other').bind(this)

除非您希望 this.loadResults('other') 返回一个函数,并且您将 'this' 绑定到该函数。但我不认为你正在这样做,因为你之后没有对它做任何事情。

我的猜测是摆脱 .bind(this)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章