Переменные экземпляра в функции обратного вызова - PullRequest
0 голосов
/ 18 марта 2011

Как передать переменную контейнера в функцию обратного вызова 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);
    }
 }

Я получаю this.container неопределенным в методе geomapLoaded (я использую прототипную среду).

1 Ответ

1 голос
/ 18 марта 2011

Как и @ Дэвид сказал в комментариях, вы должны быть в состоянии использовать закрытие, чтобы обойти это. Если вы используете анонимную функцию вместо 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);
                }
            }
        );
    }
 }
...