ExtJS закрывает окно перед открытием другого окна

#javascript #extjs #window

#javascript #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();
        }
    }
}
  

Комментарии:

1. win — это то же самое окно?

2. Вы хотите получить какое-либо предупреждение или всплывающее окно после закрытия вашего первого и открытия второго окна?

3. win.isVisible()!==true царапает голову

Ответ №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" />  

Ответ №2:

 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();
  

Ответ №3:

Вам нужно добавить 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")/>