У меня есть объект javascript, который мне нужен глобальным для моего приложения angularjs. Когда приложение будет выгружено (из-за обновления страницы или какого-либо другого сценария), я хотел бы сохранить объект в хранилище браузера. Я полагаю, что добавление объекта в $ rootScope выполнило бы первое требование сделать объект глобальным, но запись объекта на хранение во время события onbeforeunload
потребует доступа к переменной $ rootScope. Можно ли обнаружить событие разгрузки страницы в angularjs?Обнаружение страницы разгрузки в angularjs
ответ
Это должно сделать это, но я также предлагаю избегать $rootScope
, поскольку глобальное состояние обескуражено, и вы также можете обернуть localStorage
в сервисе, чтобы его можно было вводить и издеваться над тестированием.
.run([
'$window',
'$rootScope',
function($window, $rootScope) {
$window.addEventListener('beforeunload', function() {
localStorage.myValue = $rootScope.myValue;
});
}
]);
Спасибо. И будет ли событие для загруженной страницы загружаться? – user1491636
@ user1491636 Я не думаю, что вы должны использовать это событие. Если вы хотите, чтобы что-то запускалось в начале вашего приложения «Угловое», просто поместите его в блок «run», как в моем примере здесь. – m59
Ваше решение не решает проблему, потому что даже нажав кнопку «Отменить», она вызывается. –
вы рассмотрели, используя что-то вроде https://github.com/grevory/angular-local-storage или https://github.com/gsklee/ngStorage – Vadim