Angular: восстановить область видимости из sessionStorage
Я пытаюсь получить свой поиск и отфильтровать данные из sessionStorage, когда страница обновляется.
sessionStorage.restorestate возвращает неопределенное значение, кто-нибудь знает почему?
app.run(function($rootScope) {
$rootScope.$on("$routeChangeStart", function(event, next, current) {
if (sessionStorage.restorestate == "true") {
$rootScope.$broadcast('restorestate'); //let everything know we need to restore state
sessionStorage.restorestate = false;
}
});
//let everthing know that we need to save state now.
window.onbeforeunload = function(event) {
$rootScope.$broadcast('savestate');
};
});
1 ответ
Решение
Когда вы обновляете страницу в приложении Angular, это похоже на полную перезагрузку приложения. Таким образом, чтобы восстановить из хранилища сеансов, просто сделайте это при запуске фабрики сервисов.
app.factory('CustomerSearchService', ['$rootScope',
function($rootScope) {
...
function restoreState() {
service.state = angular.fromJson(sessionStorage.CustomerSearchService);
}
if (sessionStorage.CustomerSearchService) restoreState();
...
}
]);
Спасительная часть была уже правильной.
app.factory('CustomerSearchService', ['$rootScope',
function($rootScope) {
...
function saveState() {
sessionStorage.CustomerSearchService = angular.toJson(service.state);
}
$rootScope.$on("savestate", saveState);
...
}
]);
app.run(function($rootScope) {
window.onbeforeunload = function(event) {
$rootScope.$broadcast('savestate');
};
});