Gridstack.js предоставляет гибкий набор методов для управления сеткой и её содержимым. Особенно важным аспектом работы с динамическими интерфейсами является очистка сетки, удаление виджетов и сброс состояния. Рассмотрим основные подходы и методы, доступные для этих задач.
removeWidgetМетод removeWidget используется для удаления одного
виджета из сетки. Его ключевые особенности:
GridStackNode.doNotDestroyNode позволяет
оставить DOM-элемент в документе.Синтаксис:
grid.removeWidget(el, doNotDestroyNode);
Пример использования:
const grid = GridStack.init();
const widget = document.querySelector('.grid-stack-item');
grid.removeWidget(widget); // удаляет виджет и очищает ресурсы
Если передать true в doNotDestroyNode,
виджет будет удалён из сетки, но DOM-элемент останется доступным для
повторного использования.
removeAllДля полного удаления всех виджетов в сетке используется метод
removeAll. Он эффективен при динамическом обновлении
содержимого или сбросе интерфейса.
Синтаксис:
grid.removeAll();
Особенности:
Пример:
grid.removeAll(); // очищает всю сетку
destroyМетод destroy позволяет полностью уничтожить экземпляр
сетки, освобождая все ресурсы, включая события и внутренние данные.
Отличается от removeAll тем, что сам объект Gridstack
становится неработоспособным после вызова.
Синтаксис:
grid.destroy(removeDOM);
Параметр removeDOM:
true — удаляет также все DOM-элементы сетки.false — оставляет DOM, но отключает функциональность
сетки.Пример:
grid.destroy(true); // полностью удаляет сетку и её элементы из DOM
Используется, когда сетка больше не нужна и требуется полное освобождение ресурсов.
removeEmptyCellsGridstack.js поддерживает возможность удаления пустых ячеек или
виджетов, не содержащих контента, с помощью проверки состояния сетки.
Прямого метода removeEmptyCells нет, но можно реализовать
очистку через перебор узлов:
grid.engine.nodes.forEach(node => {
if (!node.el.innerHTML.trim()) {
grid.removeWidget(node.el);
}
});
Это особенно полезно при динамическом изменении содержимого, когда некоторые виджеты становятся пустыми после удаления данных.
При создании сетки с динамическим добавлением виджетов важно сочетать
методы removeWidget, removeAll и
destroy с проверкой состояния:
grid.compact() после удаления виджетов,
чтобы сжать сетку и убрать пустые промежутки.destroy(true) и затем GridStack.init() для
новой конфигурации.Пример динамической очистки:
function resetGrid(grid) {
if (grid.engine.nodes.length > 0) {
grid.removeAll();
grid.compact();
}
}
grid.save() или сериализацию узлов.removeAll() с
последующей инициализацией новых виджетов.Методы очистки сетки в Gridstack.js обеспечивают надежное управление динамическими интерфейсами, позволяя эффективно удалять элементы, освобождать ресурсы и поддерживать консистентность сетки.