我已经实现了一个 javascript 类,我正在使用它this.loadResults('cpu').bind(this)
来加载一个特定的结果,它可以根据字符串进行区分 - 例如cpu
或other
- 输入。
在下面找到一个最小可行的例子:
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] 删除。
我来说两句