如果是直接想法是在beforetabchange事件中等 Ext.Msg.confirm傳回true/false
問題是 Ext.Msg.confirm是非同步的,也就是在出現 Ext.Msg.confirm頁籤就已經切換了
如何是好?
有個變通的方式--先在beforetabchange中傳回false,等 Ext.Msg.confirm再手動切換activeTab
參考以下片段
===============================
beforetabchange: function (tabPanel, newCard, oldCard, eOpts) {
//...如果沒異動,直接return true...
//需確認
Ext.Msg.confirm("modified ", 'Content modified but not saved yet<br>Are you sure to exit current tab?',
function (answer) {
if (answer == 'yes') {
tabPanel.suspendEvents();//為什麼要做suspendEvent?因為以下的setActiveTab又會觸發beforetabechange事件,
tabPanel.setActiveTab(newCard);//手動切換tab
tabPanel.resumeEvents();//恢復事件傾聽
} else {
}
});
//always return false,since we will active tab by confirmation.
return false;
=========================================
來源,參考這裡
加油了,
沒有留言:
張貼留言