alekseyanikin
@alekseyanikin

AngularJS: как закэшировать отрендеренную вьюху (views)?

Как изменить поведение AngularJS, нужно чтобы при переходах между разными вью, они каждый раз не перерисовывались?
  • Вопрос задан
  • 3177 просмотров
Решения вопроса 1
EugeneOZ
@EugeneOZ
мой реквест: https://github.com/angular/angular.js/issues/3825

по опыту: юзайте ng-include
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
А что значит "не перерисовывалась"? Если вы просто не хотите загружать данные с сервера при открытии страницы, то просто храните данные в службе, а не загружайте их каждый раз при построении контроллера.
Ответ написан
dzedzinskiy
@dzedzinskiy
Full stack developer
Вы должны написать свою собственную директиву ng-view чтобы создать такую ​​функциональность.

Основная идея этого является в следующем:

До изменения маршрутов, вместо разрушения текущего view, просто сохраните его в невидимый кэш DIV, и отмените регистрацию scope listeners. Дайте элементу div атрибут data с $$route.templateUrl, чтобы иметь возможность получить его обратно. Затем загружайте новую страницу и перезагрузите listeners.

Перед сменой маршрута проверьте кэш, и если кэш вашей страницы DIV есть - получайте элемент из кэша, перерегистрируйте scope и вставте в текущий View кэш.
Ответ написан
@rotorgames
Попробуй эту дерективу https://github.com/rotorgames/angular-rg-cache-view
Она не удаляет dom а кеширует его сохраняя scope и все события.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SummerWeb Ярославль
от 120 000 до 180 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
Market-place Ростов-на-Дону
от 100 000 до 200 000 ₽
20 июн. 2024, в 17:08
3000 руб./в час
21 июн. 2024, в 22:53
1000 руб./за проект
21 июн. 2024, в 22:12
5000 руб./за проект