2017年3月3日 星期五

for Extjs4,如何在tab 頁籤切換前先做確認動作

如果是直接想法是在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;
=========================================
來源,參考這裡
加油了,

沒有留言:

張貼留言