第二次窗口没有正确关闭

时间:2016-09-20 09:58:57

标签: extjs extjs3

我想点击按钮打开一个新窗口。点击按钮窗口,打开和关闭正常,但第二次没有正确关闭。

这是我的代码

var formPanel = new Ext.FormPanel({
    height: 125,
    autoScroll: true,
    id: 'formpanel',
    defaultType: 'field',
    frame: true,
    title: 'CheckOut from SVN',
    items: [{
        fieldLabel: 'SVN Path'
    }],
    buttons: [{
        text: 'Submit',
        minWidth: 75,
        handler: function() {

            var urlTemp = './Export?' + '&' + fp.getForm().getValues(true);
            formPanel.getForm().submit({
                url: urlTemp,
                method: 'Post',
                success: successFn1,
                timeout: 18000000,
                failure: otherFn
            });
        }
    }, {
        text: 'Reset',
        minWidth: 75,
        handler: function() {
            formPanel.getForm().reset();
        }
    }]
});


function buildWindow() {

    var win = new Ext.Window({
        id: 'newWindow',
        layout: 'fit',
        width: 300,
        height: 200,
        closeAction: 'hide',
        plain: true,
        stateful: false,
        items: [formPanel]
    });

    win.show();
}

var extSVN = new Ext.Button({
    text: 'Checkout from SVN',
    minWidth: 75,
    handler: function() {
        buildWindow();
    }
});

Ext.create('Ext.panel.Panel', {
    renderTo: Ext.getBody(),
    width: 400,
    height: 300,
    items: [extSVN]
});

2 个答案:

答案 0 :(得分:0)

您在窗口上使用closeAction: 'hide',这意味着当您关闭它时,它不会被破坏而是被隐藏。 问题是,当你重新打开窗口时,你会创建一个新窗口,这样你的formPanel会在2个不同的窗口中结束,从而导致错误。

你可以:

  • 删除closeAction: 'hide',但您的formPanel也将删除 关闭窗口时会破坏,所以你必须重新创建 另一个
  • 或保留closeAction: 'hide'并仅创建 Windows一次

答案 1 :(得分:0)

您已向idform提供了window。在内部窗口中,您设置了配置closeAction: 'hide',这意味着只需按下关闭按钮window即可。

再次点击Checkout from SVN按钮,您可以创建相同的windowform id's,而不是创建新的window可以使用上一个窗口再次显示。

FIDDLE 中,我使用您的代码创建了一个演示并进行了一些修改。

CODE SNIPPET

Ext.onReady(function () {
    var formPanel = new Ext.FormPanel({
        height: 125,
        autoScroll: true,
        id: 'formpanel',
        defaultType: 'field',
        frame: true,
        title: 'CheckOut from SVN',
        items: [{
            fieldLabel: 'SVN Path'
        }],
        buttons: [{
            text: 'Submit',
            minWidth: 75,
            handler: function () {

                var urlTemp = './Export?' + '&' + fp.getForm().getValues(true);
                formPanel.getForm().submit({
                    url: urlTemp,
                    method: 'Post',
                    success: successFn1,
                    timeout: 18000000,
                    failure: otherFn
                });
            }
        }, {
            text: 'Reset',
            minWidth: 75,
            handler: function () {
                formPanel.getForm().reset();
            }
        }]
    });

    function buildWindow(btn) {
        if (!btn.win) {
            btn.win = new Ext.Window({

                layout: 'fit',

                id: 'newWindow',

                modal: true,

                width: 300,

                height: 200,

                closeAction: 'hide',

                plain: true,

                stateful: false,

                items: [formPanel]
            });
        }

        btn.win.show();
    }

    var extSVN = new Ext.Button({
        text: 'Checkout from SVN',
        minWidth: 75,
        handler: buildWindow
    });

    new Ext.Panel({
        title: 'SVN Chekcout',
        renderTo: Ext.getBody(),
        width: 200,
        height: 130,
        items: [extSVN],
        renderTo: Ext.getBody()
    });
});