我有一个带有地图标记的类,当单击该标记时,将打开一个弹出窗口,其中包含一个按钮(上面写着“ reserve”)。
我知道我可以使用
document.addEventListener("DOMContentLoaded", function(event) {
console.log("document loaded");
});
但是问题是从不调用控制台日志。当我尝试将事件监听器添加到按钮时,例如:
marker.addListener("click", () => {
this.reserveButton = document.getElementById("reserve");
this.reserveButton.addEventListener("click", this.reserveFunction);
}
我收到一个错误,TypeError: Cannot read property 'addEventListener' of null
。这是有道理的,因为脚本是在html加载之前执行的。确保html首先加载的最佳方法是什么?
编辑:根据讨论: 组件代码: 称这是模态
openReserveModal: (order, vendor) => dispatch(openModal({ type: 'reserve', order: order, vendor: vendor }))
然后在标记管理器的构造函数中使用开放保留模式
this.MarkerManager = new MarkerManager(
this.map,
this.props.openReserveModal
);
标记管理器,用于处理标记的数据(单击该标记可打开弹出窗口)
constructor(map, modal) {
this.map = map;
this.modal = modal;
this.markers = {};
this.openWindow = null;
this.highlight = null;
this.reserveButton = null;
this.reserveFunction = null;
保留div:
<div id="map-reserve" class="info-win-name info-win-reserve">
RESERVE
</div >
保留功能:
this.reserveFunction = () => {
this.modal(order, vendor);
};