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