2013-08-01 100 views
4

我創建2塊板一樣,隨着框架ExtJS的(我知道這是不是最好的方法):如何使用ExtJS銷燬對象的所有實例?

var panel = Ext.create("Ext.panel.Panel", { 
       title: "first panel", 
       width: 400, 
       height: 250, 
       renderTo: Ext.getBody(), 
       html: "test 1" 
      }); 

panel = Ext.create("Ext.panel.Panel", { 
       title: "second panel", 
       width: 400, 
       height: 250, 
       renderTo: Ext.getBody(), 
       html: "test 2" 
      }); 

現在,我有我的瀏覽器2個板。現在,如果我這樣做:

panel.destroy(); 

它只銷毀最後一個。 所以我的問題是:我如何銷燬第一個面板?有沒有一種方法可以包含瀏覽器中的所有面板? ?我每次存儲的ID面板,以便以後消滅他們......

回答

2

試試這個:

var objArray = Ext.ComponentQuery.query("Ext.panel.Panel"); 

objArray包含所有面板對象。

現在運行一個for循環並銷燬所有對象。

+0

感謝您的寶貴幫助,這就是我一直在尋找的! –

1

如果你讓他們不同的變量(或您所管理的一個數組),你可以單獨摧毀他們:

var panel1 = Ext.create("Ext.panel.Panel", { 
    ... 
}); 

var panel2 = Ext.create("Ext.panel.Panel", { 
    ... 
}); 

panel1.destroy(); 
panel2.destroy(); 

或者這樣:

var panels = []; 
var panels[0] = Ext.create("Ext.panel.Panel", { 
    ... 
}); 

var panels[1] = Ext.create("Ext.panel.Panel", { 
    ... 
}); 

for (var i=0; i<panels.length; i++) 
{ 
    panels[i].destroy(); 
} 
+0

感謝您的回答Kevhender。我在我的帖子之前嘗試了這種方法。你知道另一種方式來銷燬實例的2個「實例」嗎? –

+0

@RémyJUANES,除非您已將包含面板的變量重新分配給別的東西,否則沒有理由使此代碼無法工作。此代碼已經過測試並按預期工作。 – kevhender

+0

是的,你是對的,我nerver說你的代碼不起作用,我只是想找另一種方法來做到這一點,以便更多地瞭解ExJs。 –