使用google maps事件监听器的类方法运行外部函数

时间:2015-07-23 11:36:29

标签: javascript google-maps

对于问题标题感到抱歉,很难找到一个好的...

我有一个类来处理谷歌地图,我的一个方法是创建一个自定义控件:

// method:
Map.prototype.addButton = function (order, onCLickEvent) {
    var that = this;
    var buttonUI = $.get('/templates/order-button.html', function (data) {
        var button = $(data)[0];
        $(button).attr('id', order.id);
        $(button).find('span:eq(1)').text('#' + order.id);

        google.maps.event.addDomListener(button, 'click', function() {
            onCLickEvent;
        });
    });
}

如您所见,我添加了click个事件。该点击应该打开一个模态窗口。

当我使用我正在做的方法时:

var map = new Map();
map.addButton(order, openMyModal());

不幸的是,它会在页面加载后立即打开模式。

我也尝试过这样做:

var map = new Map();
map.addButton(order, function() {
  openMyModal();
});

所以,我的问题是,如何将我的开放模态窗口函数附加到谷歌地图事件监听器?

1 个答案:

答案 0 :(得分:1)

var map = new Map();
map.addButton(order, openMyModal());

应该是

var map = new Map();
map.addButton(order, openMyModal);

您想要传递函数,而不是函数的结果作为第二个参数

    google.maps.event.addDomListener(button, 'click', function() {
        onCLickEvent;
    });

应该是

    google.maps.event.addDomListener(button, 'click', function() {
        onCLickEvent();
    });

这里你想要执行传入函数