如何在 ExtJS 中单击按钮打开模式

How to open a modal on button click in ExtJS

我第一次尝试使用下面的代码工作正常,但是当我关闭弹出窗口并再次单击按钮时它停止工作。

 var myForm = new Ext.form.Panel({
        width: 500,
        height: 400,
        title: 'Foo',
        floating: true,
        closable : true
    });
    //myForm.show();

Ext.create('Ext.Button', {
    text: 'Click Me',
    renderTo: Ext.getBody(),
    listeners: {
        click: function() {
           myForm.show();
        }
    }
});

您可以将以下内容添加到您的面板。关闭后会隐藏它

            closeAction: 'hide'

如果你正在构建一个大屏幕,虽然你最好保持原样(它保持 dom 整洁)但是当你再次点击按钮时你需要重新创建组件

因为默认情况下 closeAction 等于 'destroy',这意味着组件将在单击关闭按钮时被销毁。销毁 myForm 对象后,第二次尝试将无法使用它。

解决方案:
1) 您可以将 closeAction 更改为 'hide',然后单击关闭按钮组件将隐藏在 dom.

var myForm = new Ext.form.Panel({
    width: 500,
    height: 400,
    title: 'Foo',
    floating: true,
    closable: true,
    closeAction: 'hide'//<-------------
});

2) 您可以在每次单击按钮时创建新对象。

Ext.create('Ext.Button', {
    text: 'Click Me',
    renderTo: Ext.getBody(),
    listeners: {
        click: function () {
            new Ext.form.Panel({
                width: 500,
                height: 400,
                title: 'Foo',
                floating: true,
                closable: true
            }).show();
        }
    }
});