回调函数中的实例变量

时间:2011-03-18 06:24:59

标签: javascript variables callback prototypejs

如何将容器变量传递给回调函数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(我正在使用原型框架)。

1 个答案:

答案 0 :(得分: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);
                }
            }
        );
    }
 }