2016-06-30 5 views
0

У меня есть приложение Alloy, структурированное с одним окном, разделенным на два вида: вид в боковой панели слева и основной вид справа. Каждый раз, когда пользователь нажимает на другой элемент меню на боковой панели, я удаляю всех детей, прикрепленных к основному виду, и загружаю вид/контроллер, связанные с этим элементом меню, и прикрепляю его к основному виду. Мой вопрос: достаточно ли этого? Если в удаленном представлении присутствуют прослушиватели событий, прикрепленные к элементам внутри него, они тоже очищаются или нет? Должен ли я хранить ссылку на каждый контроллер, который я создал, и вызвать контроллер.destroy() и controller.off(), прежде чем загружать новый просмотр/контроллер или не нужно?Титан: правильно очистите контроллер, связанный с видом не окна.

Я спрашиваю, потому что с представлениями без окна невозможно подключить функцию очистки к событию «onclose», потому что элементы UI.View не могут быть «закрыты» (только окна).

Итак, каков правильный способ справиться с этой ситуацией в титане?

ответ

0

Слушатели событий могут хранить ссылки, особенно вы добавляете их с Ti.APP.addEventListeners.

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

+0

Но если я только присоединяю слушателей событий к внутренним элементам представления, которые я удаляю, они выживут или нет? Спасибо за вашу помощь. – revy

+0

Они не выживут, если не привяжутся к коллекции или модели. Вы можете протестировать его с помощью своих кодов следующим образом: добавить Ti.App.info («несколько слов») в своем слушателе событий, закрыть окно и снова открыть его, увидеть, сколько «некоторых слов» показывает, если «несколько слов» показывают дважды , это означает, что прослушиватель событий в закрытом вами представлении все еще существует. – jack

+0

Хорошо, теперь я получил его, спасибо! – revy