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