現在のシステムは、フロントエンド フレームワークとして Extjs を使用しており、左側にアコーディオン スタイルのメニュー バーがあり、中央の領域に TabPanel コンテナーがあり、左側のメニュー バーの対応するメニューをクリックします。中央の領域に対応するパネルを追加します。パネルは追加されたグリッドビューに埋め込まれています。
現在の問題は、ユーザーが閉じたときにダイアログボックスをポップアップ表示することです。現在のページ (パネル) を破棄するか、現在のパネルを非表示にして一時データを保存するかどうかのユーザーの選択
追加されたパネルが beforeclose イベントをリッスンするために Extjs API ドキュメントを表示します
メインコードは次のとおりです
中間部分:
//centerPanel
centerPanel = new Ext.TabPanel({
id: 'centerPnl'
、region: 'center'
、border: false
、iconCls : 'tabs'
、enableTabScroll: true
、項目: [{
title: 'Home'
、autoScroll: true
}]
、デフォルト: { autoScroll: true }
}); 新しいパネル関数を追加します addCMUAMS_LogTab() {
activeCMUAMS_LogTab = centerPanel.add({
id: 'CMUAMS_LogShowAll'
, title: 'システム ログ'
, iconCls: 'タブの
、閉じる可能: true
、bodyStyle: 'padding:10px'
、項目: CMUAMS_LogGrid
、リスナー: { beforeclose:TabCloseconfirm }
})
activeCMUAMS_LogTab.show( );
}
しかし、この場合、状況は次のとおりです:
パネルは 'beforeclose' 前に閉じられています。情報を見ていて、突然、TabePanel がコンテナとして最初にイベントをインターセプトする必要があるのではないかと思いました。したがって、中央の領域のコードは次のように変更されます。 //centerPanel
centerPanel = new Ext.TabPanel({
id: 'centerPnl'
、region: 'center'
、border: false
、iconCls: 'tabs'
、enableTabScroll: true
、項目: [{
title: 'Home'
、autoScroll: true
}]
、デフォルト: { autoScroll: true }
//最初のリッスンbeforeremove イベント
に対して、リスナー: { beforeremove: function(ct,component ) { return false; } }
});
を再度実行して効果を確認します。
これを完了するには、パネルをクリックする必要があります。ボタンを閉じるときは、TabPanel コンテナーの Remove イベントが最初に実行され、次にパネル自体の Close イベントが実行されます。急いでください。あまり詳しく調べる時間がありません。私は JS と Extjs についてあまり知りませんが、友人が本当の理由を教えてくれるのを望んでいます。