2011-03-18 104 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); 
       } 
      } 
     ); 
    } 
}