Unpoly предоставляет гибкий и мощный механизм для управления отдельными частями страницы, называемыми фрагментами. Уничтожение фрагментов — это процесс удаления или очистки этих элементов из DOM, что позволяет эффективно управлять состоянием интерфейса и предотвращать накопление устаревших или ненужных элементов.
Unpoly использует метод up.destroy() для удаления
фрагментов. Он может применяться как к отдельным элементам, так и к их
родительским контейнерам.
up.destroy(element)
где element — это DOM-узел или селектор. Метод удаляет
указанный элемент и все его дочерние фрагменты из DOM. Если элемент
содержит привязанные обработчики событий, Unpoly автоматически их
отвязывает, предотвращая утечки памяти.
Удаление одного фрагмента по селектору
up.destroy('#user-profile');
Фрагмент с идентификатором user-profile будет полностью
удалён из DOM, включая все дочерние элементы и события.
Удаление всех дочерних фрагментов контейнера
up.destroy('.comments .comment');
Удаляются все элементы с классом comment, находящиеся
внутри контейнера comments. Это удобно для очистки списка
динамически подгружаемых комментариев перед новой загрузкой.
Unpoly поддерживает плавное исчезновение элементов перед их
удалением. Для этого используется опция animate:
up.destroy('#notification', { animate: true });
Фрагмент будет сначала скрыт с применением CSS-анимации, после чего
удалён из DOM. Настройка анимации осуществляется через стандартные
CSS-классы Unpoly (up-fade, up-slide,
up-fade-up и др.).
При динамическом обновлении страницы важно учитывать внутреннее
состояние фрагментов, например временные данные форм или состояния
видимости. Метод up.destroy() не только удаляет элемент, но
и освобождает внутренние кэшированные данные Unpoly. Это предотвращает
ошибки при повторном создании фрагмента с тем же идентификатором.
up.destroy('#search-results');
После выполнения этой команды фрагмент search-results
можно безопасно заново загрузить с сервера, не опасаясь конфликтов
старого состояния.
Unpoly позволяет автоматически уничтожать фрагменты при загрузке
новых. Для этого используется опция up-target в сочетании с
up-on-remove:
<div id="sidebar" up-target="true" up-on-remove="destroy"></div>
Когда новый фрагмент загружается в контейнер, старый автоматически уничтожается, что облегчает управление динамическими интерфейсами с множеством заменяемых блоков.
up.destroy() корректно отвязывает все обработчики событий,
включая глобальные события Unpoly.Уничтожение фрагментов — ключевой инструмент для построения динамичных, отзывчивых интерфейсов с Unpoly. Он позволяет эффективно управлять DOM, предотвращать утечки памяти и поддерживать актуальное состояние страницы при частых обновлениях фрагментов.