Удалить компонент Sencha Touch 2

Каков правильный способ удаления компонента, который, как я знаю, больше не буду использовать, но позже хочу использовать новые экземпляры того же класса?

Например, форма создания добавляется в область просмотра с помощью Ext.Viewport.add(), но как только она будет отправлена, я хочу уничтожить форму, поэтому в следующий раз, когда пользователь захочет создать элемент, будет сгенерирована новая форма (т. е. создан экземпляр нового компонента) .

Пробовал и Ext.Viewport.remove(form, false), и Ext.Viewport.remove(form, true), оба выдают ошибку: TypeError: Cannot set property 'className' of undefined.


person Attila O.    schedule 28.10.2011    source источник


Ответы (1)


По-видимому, причина, по которой это не сработало, заключается в том, что я пытался удалить компонент из кода, который я запускал из обработчика событий для компонента, содержащегося в компоненте, который нужно удалить.

Например, если вы нажмете кнопку, и кнопка немедленно попытается удалить свой компонент-контейнер из области просмотра, удаление завершится успешно, но событие освобождения кнопки будет вызвано без элемента DOM для работы, так как сама кнопка также был удален.

Простой обходной путь — вызвать Ext.Viewport.remove(...) после короткого тайм-аута.

person Attila O.    schedule 04.11.2011
comment
Просто идея, и я не слишком много думал об этом, но не было бы лучше вызвать удаление в событии выпуска (или даже в последнем, вызванном нажатием кнопки)? - person Brendon Muir; 01.10.2013
comment
Это, вероятно, сработает... К сожалению, у меня больше нет этого кода, чтобы проверить его. - person Attila O.; 01.10.2013
comment
Ха-ха, да все хорошо. Абсолютно старый пост! :) У меня всегда возникают проблемы, когда я забываю об асинхронной природе Sencha Touch! - person Brendon Muir; 01.10.2013