Как открыть модал по нажатию кнопки в ExtJS - PullRequest
0 голосов
/ 27 сентября 2018

Я попробовал приведенный ниже код, он работает нормально в первый раз, но когда я закрываю всплывающее окно и снова нажимаю на кнопку, он перестает работать.

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

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Поскольку по умолчанию closeAction равно «уничтожить», это означает, что компонент будет уничтожен при нажатии кнопки закрытия.После уничтожения объекта myForm он не будет доступен со второй попытки.

решение:
1) Вы можете изменить closeAction на «скрыть» и после нажатия кнопки «Закрыть»просто прячется в дом.

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();
        }
    }
});
0 голосов
/ 27 сентября 2018

Вы можете добавить следующее на вашу панель.Это будет скрывать его после закрытия

            closeAction: 'hide'

Если вы строите большой экран, хотя вам лучше оставить его как есть (он сохраняет дом в чистоте), но вам нужно будет воссоздатькомпонент, то при повторном нажатии кнопки

...