2013-03-08 1 views
4

У меня есть окно с closeAction, выполненным с возможностью 'hide' на конкретизации:ExtJS: Уничтожить окно конфигурации «closeAction» установлен в «шкуру»

var myWin = Ext.create('Ext.window.Window', { 
    ... 
    closeAction:'hide', 
    ... 
}); 

Вызов close() на myWin поэтому просто скрывает окно. Мне нужно уничтожить окно в смысле destroy, как следует из документации Сенча:

удалить окно из DOM и уничтожить его и всех потомков компонентов. Окно не будет доступно для повторного отображения с помощью метода show .

Что я попробовал? Я пробовал:

  1. вызова destroy непосредственно на объект окна:

    myWin.destroy(); 
    
  2. установки closeAction в destroy до вызова close():

    win.closeAction='destroy'; 
    win.close(); 
    

В обоих случаях, myWin просто скрывается, а не разрушается. Есть предположения?

+0

С 'Destroy()' он совершенно разрушен: http://jsfiddle.net/5BcBd/1/. – VisioN

+0

@VisioN Спасибо за ваш комментарий. Как вы проверяете, просто ли он скрыт или фактически уничтожен? В моем случае я могу повторно показать окно, поэтому я выяснил, что он скрыт и не уничтожен. –

+1

Я обновил скрипту в комментарии выше, чтобы отобразить содержимое 'body' до и после удаления. Как правило, для этого вы можете использовать Chrome DevTools или Firebug. В случае 'destroy()' структура DOM удаляется, и если вы попытаетесь вызвать 'show()' впоследствии, JS вызовет ошибку. – VisioN

ответ

6

Метод destroy() должен успешно удалить объект окна из DOM. Чтобы проиллюстрировать это, вы можете проверить базовый пример в JSFiddle.

После вызова myWin.destroy() структура очищается, и невозможно восстановить окно с помощью myWin.show().

1

Вы хотите уничтожить window.use ниже код

Ext.getCmp('Window Id').destroy();