我同时使用 OpenLayers 和 ExtJS。在地图中,我会在您与地图交互时出现弹出窗口。这些弹出窗口的 HTML 包含一个容器,我用它来创建一个带有菜单的 extjs 按钮。
当您关闭弹出窗口或单击菜单/按钮时,菜单不会消失。单击按钮以显示菜单后,它仍然可见!为了解决这个问题,我可以编写一些代码来手动销毁它 - 但我只是在弹出窗口关闭时触发此代码。有谁知道为什么带有菜单的按钮会这样?
在地图上创建弹出窗口时,我初始化按钮和菜单:
Map.popupMenu = new Ext.menu.Menu({
id: "ChangesGridContextMenu",
items: [{ .... }]
});
Map.popupButton = new Ext.Button({
id: "popupActions",
text: "Actions..",
menu: Map.popupMenu
});
当弹出窗口关闭时,我会销毁 extjs 组件:
if (Map.popupMenu !== null) {
Map.popupMenu.destroy();
Map.popupMenu = null;
}
if (Map.popupButton !== null) {
Map.popupButton.destroy();
Map.popupButton = null;
}