使用googlemaps事件侦听器运行外部函数的类方法

Class method with google maps event listener run external function

本文关键字:函数 类方法 外部 运行 googlemaps 事件 侦听器 使用      更新时间:2023-09-26

很抱歉问题标题,很难找到好的。。。

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

// 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();
});

所以,我的问题是,如何将我的开放模式窗口函数附加到googlemaps事件侦听器?

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();
    });

在这里,您想要执行传入的函数