Задать вопрос
alekseyanikin
@alekseyanikin

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

Как изменить поведение AngularJS, нужно чтобы при переходах между разными вью, они каждый раз не перерисовывались?
  • Вопрос задан
  • 3178 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 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 и все события.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы