7

У меня есть объект javascript, который мне нужен глобальным для моего приложения angularjs. Когда приложение будет выгружено (из-за обновления страницы или какого-либо другого сценария), я хотел бы сохранить объект в хранилище браузера. Я полагаю, что добавление объекта в $ rootScope выполнило бы первое требование сделать объект глобальным, но запись объекта на хранение во время события onbeforeunload потребует доступа к переменной $ rootScope. Можно ли обнаружить событие разгрузки страницы в angularjs?Обнаружение страницы разгрузки в angularjs

+0

вы рассмотрели, используя что-то вроде https://github.com/grevory/angular-local-storage или https://github.com/gsklee/ngStorage – Vadim

ответ

11

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

.run([ 
    '$window', 
    '$rootScope', 
    function($window, $rootScope) { 
    $window.addEventListener('beforeunload', function() { 
     localStorage.myValue = $rootScope.myValue; 
    }); 
    } 
]); 
+0

Спасибо. И будет ли событие для загруженной страницы загружаться? – user1491636

+0

@ user1491636 Я не думаю, что вы должны использовать это событие. Если вы хотите, чтобы что-то запускалось в начале вашего приложения «Угловое», просто поместите его в блок «run», как в моем примере здесь. – m59

+0

Ваше решение не решает проблему, потому что даже нажав кнопку «Отменить», она вызывается. –