2011-03-18 11 views
0

コンテナ変数をコールバック関数geomapLoadedに渡すには?コールバック関数のインスタンス変数

MyMap = Class.create({ 
    initialize: function(container) { 
      this.container = container; 
     google.load('visualization', '1', {'packages': ['geomap'], 'callback' : this.geomapLoaded}); 
    }, 

    geomapLoaded: function() { 
     this.map  = new google.visualization.GeoMap(this.container); 
    } 
} 

geomapLoadedメソッドでthis.containerが定義されていません(プロトタイプフレームワークを使用しています)。

+0

コンテナとは何ですか? – stef

+0

[closure](http://stackoverflow.com/questions/111102/how-do-javascript-closures-work)が役立つかもしれません。 – David

答えて

1

@Davidのように、コメントでは、これをラウンドするためにクロージャを使用することができます。 geomapLoadedの代わりに無名関数を使用するとうまくいけばうまくいく:

MyMap = Class.create({ 
    initialize: function(container) { 
     this.container = container; 

     // Create a reference to this so we can use 
     // it in our callback function 
     var that = this; 

     google.load('visualization', 
      '1', 
      { 
       'packages': ['geomap'], 
       'callback' : function() { 
        that.map = new google.visualization.GeoMap(that.container); 
       } 
      } 
     ); 
    } 
}