Die Zerstörung der Fenster
Ich bin mit ExtJs4.
new Ext.Window({
id: token + '_window',
animateTarget: token + '_taskbar', //Button id
height: 300,
width: 300,
title: name,
maximizable: true,
minimizable: true,
iconCls: 'basketball-small-icon',
html: 'This is the <b>' + name + '</b> window',
listeners: {
'beforeclose': onWindowClose,
'minimize': function(){ this.hide(); }
}
Hinweis: die Schaltfläche, die den animieren-Ziel verbunden ist.
Hier zum ist definiert als
function onWindowClose(t){
var token = t.id.split('_')[0];
var taskBarItemId = token + '_taskbar';
Ext.getCmp(taskBarItemId).destroy(); //Destroying the button
t.destroy(); //Destroying the window
}
Hier möchte ich entfernen Sie die Fenster und die zugehörige Schaltfläche.
Jedesmal, wenn ich das Fenster schließe, habe ich zwei Möglichkeiten, wie unten
- Ich zerstören können sowohl die Taste und das Fenster auf aber manchmal kann ich nicht öffnen Sie die Fenster wieder. Ich denke, das hat etwas mit der Tatsache zu tun, dass der button ist mit "Fenster " animateTarget'. Weil, wenn ich entfernen Sie diese Eigenschaft, diese funktioniert einwandfrei.
- Ich kann t verwenden.close() anstelle von t ist.destroy(), aber es wird rekursiv. Wie kann ich rufen Sie die base-Methode schließen?
Ist es eine gute Idee zu zerstören, das Fenster jedes mal und erstellen Sie mit 'neu', wenn das icon angeklickt wird?
Was ist der Unterschied zwischen close() und destroy() Methoden?
InformationsquelleAutor Shashwat | 2012-02-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ich gut verstehe, Sie wollen, dass die Wiederverwendung der Fenster, mit einem anderen Inhalt.
Also, sollten Sie nur ein Fenster, dass Sie die Wiederverwendung durch die Aktualisierung der html-Inhalt und Aufruf von show() auf dieses Fenster.
Zu führen, dass Sie benötigen, um die Eigenschaft hinzufügen
closeAction:'hide'
. Auf diese Weise werden Ihre Fenster nicht zerstört werden, die beim Klick auf die schließen-Schaltfläche.Anschließend fügen Sie diesen listener, um Ihre Schaltflächen :
InformationsquelleAutor Imad Moqaddem
Haben Sie nicht rufen Sie destroy (), da sobald das Fenster geschlossen ist, ist es automatisch zerstört.
Siehe api von Ext.Fenster.
Und nicht, rufen Sie close() in der beforeclose-handler, da es bereits zu schließen.
Denke ich, können Sie 'neu', wenn Sie möchten, um ein Fenster zu erstellen und zu schließen, klicken Sie entweder auf das schließen-header-tool(oben rechts) oder rufen Sie die close () - Methode. Kümmern Sie sich nicht zerstören. Extern wird es tun.
Den wichtigsten Unterschied zwischen close() und destroy() ist in der Nähe feuert 'beforeclose" Ereignis, und entscheiden Sie, ob das Fenster zu schließen oder ausblenden, basierend auf config option 'closeAction'. Wenn es entscheidet zu schließen, destroy() wird aufgerufen.
EDIT:
versuchen Sie die folgenden
EDIT2: Entfernen minimieren Zuhörer
nicht Sie klicken Sie auf die Schaltfläche " x " oben rechts um das Fenster zu schließen? Dann ja, brauchen Sie nicht, rufen Sie close() oder destroy().
Willst du mir nicht auch die t sein.close () - oder t.destroy()? Es funktioniert nicht. Es entfernt die Schaltfläche, aber nicht das Fenster und das Fenster klemmt. Ich denke, t ist.close() wird ausgelöst, wenn ich call-Basis-Methode " close() in der Prozedur. Können Sie mir sagen, wie zu tun?
Ich habe aktualisiert die Antwort, versuchen Sie, die.
seine immer noch nicht funktioniert... so dass das gleiche problem... es entfernt die Schaltfläche der Taskleiste, aber halte die Fenster...
InformationsquelleAutor Grant Zhu