@unsstrennen

Как сделать ре-рендер страницы с сохранением классов у объектов?

Вопрос сложный.
На сайте реализован treeview, в каждой вкладке находится какая-то деталь, модификацию которой пользователь может менять. Изменения модификации осуществляются путём отправки на сервер формы с изменённой модификацией.
Проблема заключается в том, что при отправке формы делается запрос на адрес обработчика, затем - обратно на страницу с treeview. Стандартная схема. Но в таком случае мой treeview обратно "складывается", что доставляет ряд неудобств пользователю. Было бы логично отправлять формы при помощи AJAX. Да, такой метод позволит отправлять часть форм таким образом. Но, например, при добавлении 'свойства' к модификации какой-то детали, страница должна перерендериться при помощи средств Jinja2 (чтобы новое свойство появилось на странице в нужной форме и его можно было изменять)
Как мне сделать так, чтобы при отправке формы, в результате отправки которой страница перерендеривалась, мой treeview не складывался?
Принцип работы treeview стандартный, приведённый, к примеру, на портале W3C. Всякие варианты вроде
window.location.reload();
window.location.href = "/panel";

также 'сворачивают' дерево, обнуляя его классы.
  • Вопрос задан
  • 173 просмотра
Решения вопроса 1
joeberetta
@joeberetta Куратор тега JavaScript
Читай: https://epdf.pub/google-for-dummies.html
Состояние интерфейса можете хранить с sessionStorage или localStorage. Подробнее о них тут: https://learn.javascript.ru/localstorage
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@McBernar
Сохранять состояние tree в localstorage и доставать его оттуда при перезагрузке страницы.
Но лучше, конечно, избавиться от перезагрузки в принципе.
Ответ написан
Комментировать
profesor08
@profesor08 Куратор тега JavaScript
Раз схлопывается при изменении, тогда разверни обратно. При раскрытии ты можешь сохранять пути к веткам, а потом программно обходить и раскрывать. Если хочешь, чтоб раскрывалось после обновления страницы, то можешь сохранить данные в localStorage.

Путь можно не сохранять, а хранить лишь идентификаторы раскрытых элементов, так проще.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы