2011-03-18 105 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 undefined。

+0

什麼是容器? – stef 2011-03-18 06:28:02

+0

也許[閉包](http://stackoverflow.com/questions/111102/how-do-javascript-closures-work)可以幫助你。 – David 2011-03-18 06:36:42

回答

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); 
       } 
      } 
     ); 
    } 
}