2016-10-21 4 views
2

Я хочу закрыть окно перед тем, как открыть другое окно, я попытался сделать то же самое, но он не работает, есть ли кто-нибудь, кто может мне помочь?ExtJS закрыть окно перед открытием другого окна

Отрывок из моего кода:

listeners: { 
    click: function() { 
     var win = new Ext.window.Window({ 
      constrain: true, 
      height: 300, 
      title: 'Window', 
      width: 300, 
      closeAction: 'hide' 
     }); 
     if (win.isVisible() !== true) { 
      win.show(); 
     } else { 
      win.close(); 
     } 
    } 
} 
+0

выиграть то же самое окно? –

+0

Вам нужно какое-то предупреждение или всплывающее окно после закрытия ур первым и открытие второго окна? – UDID

+1

'win.isVisible()! == true' * царапины голова * –

ответ

0
var win = new Ext.window.Window({ 
      constrain: true, 
      height: 300, 
      title: 'Window', 
      width: 300, 
      closeAction: 'hide', 
      listeners:{ 
       beforeclose:function(){ 
        Ext.Msg.alert('Close','You\'re closing Window',function(){ 
         var win2== new Ext.window.Window({ 
          constrain: true, 
          height: 300, 
          title: 'Window2', 
          width: 300, 
          closeAction: 'hide' 
         }); 
         win2.show(); 
        }); 
       } 
      } 
     }); 
     win.show(); 
1

Вы можете использовать Ext.WindowManager.

Ext.create('Ext.Button', { 
 
    text: 'Click me', 
 
    renderTo: Ext.getBody(), 
 
    listeners: { 
 
    click: function() { 
 
     Ext.WindowManager.each(function(cmp) { 
 
     cmp.close(); 
 
     }); 
 
     Ext.create('Ext.window.Window', { 
 
     constrain: true, 
 
     height: 300, 
 
     title: 'Window', 
 
     width: 300, 
 
     closeAction: 'hide' 
 
     }).show(); 
 
    } 
 
    } 
 
})
<script src="http://cdn.sencha.com/ext/gpl/4.2.0/ext-all.js"></script> 
 
<link href="http://cdn.sencha.com/ext/gpl/4.2.0/resources/css/ext-all.css" rel="stylesheet" />

+0

спасибо, что это работает как шарм, – Joy

0

Вы должны добавить beforeclose событие в окно. В нем вы вызываете новое окно.

Ext.application({ 
 
    name: 'Fiddle', 
 
    launch: function() { 
 
     let i = 1; 
 
     function create_window(title) { 
 
      var win = new Ext.window.Window({ 
 
       constrain: true, 
 
       height: 150, 
 
       title: 'Window ' + title, 
 
       width: 300, 
 
       closeAction: 'hide', 
 
       listeners: { 
 
        beforeclose: function (sender, options) { 
 
         i++; 
 
         create_window(i); 
 
         return true; 
 
        } 
 
       } 
 
      }); 
 
      if (win.isVisible() !== true) { 
 
       win.show(); 
 
      } else { 
 
       win.close(); 
 
      }  
 
     } 
 
     create_window(i); 
 
    } 
 
});
<script src="http://cdn.sencha.com/ext/gpl/4.2.0/ext-all.js"></script> 
 
<link type="text/css" rel="stylesheet" href="http://cdn.sencha.com/ext/gpl/4.2.0/resources/css/ext-all.css")/>