0

我试图在类函数中调用一个函数。就像下面的代码。我想调用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){
    ...
  }
}
4

2 回答 2

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");
  }
}
于 2018-10-05T02:24:44.480 回答
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){
    ...
  }
}
于 2018-10-05T03:43:29.997 回答