我试图在类函数内调用一个函数。
像下面的代码。我想在我的addMarks
函数中调用init()
。
但这引发了这个错误
$。get(...)。bind不是函数
class MapManager {
init(){
$('#search').click(function(event) {
if(start && destination){
$.get('routes/search', {data: 123}, function(data, textStatus, xhr) {
this.addMarks(data.data);
}).bind(this);
}
});
}
addMarks(locations){
...
}
}
答案 0 :(得分:0)
您将this
绑定到$.get
,而不是successFn
。
否则,您始终可以预先分配this
并在successFn
范围内访问它。
例如
class MapManager {
init(){
let self = this; // <-- assign it here
$('#search').click(function(event) {
if(start && destination){
$.get('routes/search', {data: 123}, function(data, textStatus, xhr) {
// Yes! I can access 'self' here because it is defined where I am defined.
self.addMarks(data.data);
});
}
});
}
addMarks(locations){
console.log(":: addMarks");
}
}
答案 1 :(得分:0)
由于您使用的是class
,因此对于现代javascript,您可以完全忘记使用箭头功能符号进行绑定
class MapManager {
init(){
$('#search').click((event) => {
if(start && destination){
$.get('routes/search', {data: 123}, (data, textStatus, xhr) => {
this.addMarks(data.data);
});
}
});
}
addMarks(locations){
...
}
}