AngularJS поддерживает состояние при смене представлений?

Есть ли способ сохранить $scope при смене представления и возвращении?

Когда я загружаю определенное представление, происходит тяжелая загрузка (загрузка данных), но если я переключаю представления и возвращаюсь к этому, данные снова перезагружаются. Есть ли способ предотвратить это?

Я не собираюсь обмениваться данными между представлениями, я просто хочу иметь старое состояние, когда вернусь к тому же представлению.


person user3452075    schedule 04.02.2016    source источник
comment
Вы можете сохранить свое состояние, как я упоминаю в своем ответе. Но представление уничтожается при роутинге, и вам нужно его перестроить.   -  person André Snede    schedule 05.02.2016


Ответы (1)


Есть несколько способов справиться с этим.

$rootScope
Возможно, вы сможете хранить значения в $rootScope, я не верю, что они меняются при использовании внутреннего модуля маршрутизации, но я бы не рекомендовал этого делать.

Службы (Моя немедленная рекомендация)
Вы можете использовать статическую службу, в которой данные могут храниться либо постоянно, либо при смене маршрута. Затем вы можете снова загрузить данные в $scope.

Кэширование
AngularJS имеет встроенный кеш, который вы можете использовать. Это здорово, если вам нужно хранить только некоторые из них или в течение меньшего времени. Прочтите документацию для CacheFactory здесь.

WebSQL или локальное хранилище
Для больших объемов данных, которые вы хотите хранить между сеансами, вы можете использовать базу данных WebSQL в большинстве браузеров или сохранить ее в виде текста в локальном хранилище браузера.

person André Snede    schedule 04.02.2016