簡體   English   中英

ExtJs窗口不顯示

[英]ExtJs window doesn't show

我有一個切換按鈕:

        var button =  new Ext.Button({
        tooltip: "Интенсивность",
        iconCls: "gxp-icon-intensity",
        enableToggle:true,
        toggleHandler: function (button, state) {
            if(state){
                alert(state)
                map.getLayersByName("Интенсивность")[0].setVisibility(true);
                intWin.show();
            }else{
                map.getLayersByName("Интенсивность")[0].setVisibility(false);
                alert(intWin.collapsed);
                //intWin.close();
            }
        }
    });

當切換按鈕時,我顯示一個窗口:

    var intWin = new Ext.Window({
        id: 'intWin', 
        layout: 'fit',
        title:'Интенсивность',
        autoScroll:false,
        width:300,
        items:[/*intForm*/]
    });

當我關閉窗口時,該按鈕將取消切換。 但是當我再次單擊它時,我沒有窗口。 Firebug顯示此錯誤:

 TypeError: b.dom is undefined

...String(this.enableUrlEncode)?this.enableUrlEncode:"data"]=Ext.encode(b);g.params...

這里有什么問題?

UPDATE

哦,我不好。 我試圖顯示一個被破壞的元素。

但是在這種情況下:
1當我關閉窗口並被銷毀時,此窗口中的任何表格也會被銷毀嗎?
2如何檢查窗戶是否被破壞?

UPDATE2

現在,我嘗試使用此函數來創建窗口:

    function intWinCreate(){
        var intWin = new Ext.Window({
            id: 'intWin', 
            layout: 'fit',
            title:'Интенсивность',
            autoScroll:false,
            width:300,
            items:[/*intForm*/]
        });
    };

並在按鈕處理程序中:

                intWinCreate();
                intWin.show();

但是我得到一個錯誤:

  ReferenceError: intWin is not defined

如果我輸入intWin.show(); 進入功能,然后顯示該窗口。
有什么事嗎

當一個元素被破壞時,它里面的所有東西也會被破壞。

在您的情況下,您可以通過將屬性closeAction: 'hide'設置為closeAction: 'hide'來更改關閉動作的默認行為closeAction: 'hide'這將導致窗口隱藏而不是被破壞。

例如:

var intWin = new Ext.Window({
    id: 'intWin', 
    layout: 'fit',
    closeAction: 'hide',
    title:'Интенсивность',
    autoScroll:false,
    width:300,
    items:[/*intForm*/]
});

更新:
這是因為intWin是方法的局部變量intWinCreate 您可以做的是從方法中返回窗口並在其上調用show。

function intWinCreate(){
    return new Ext.Window({
        id: 'intWin', 
        layout: 'fit',
        title:'Интенсивность',
        autoScroll:false,
        width:300,
        items:[/*intForm*/]
    });
};

然后

intWinCreate().show()
  1. 是的,表格通常也被破壞
  2. 您可以檢查例如intWin.body-如果它為null-窗口已損壞

UPDATE

如我所見,您已經有一個背心了,但我也有另一個背心了;)只要您設置好

id: 'intWin'

您可以使用以下任何位置訪問此窗口:

Ext.getCmp()

這樣就可以顯示它:

Ext.getCmp('intWin').show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM