更新时间:2023-12-01 20:32:10
这应该做到这一点,但我也建议避免 $ rootScope
作为全局状态是不鼓励的,你也可以在一个服务中包装 localStorage
,这样它就可以被注入并模拟测试。
$ b $ pre code $ .run([
'$ window',
'$ rootScope',$ b $函数(){
localStorage.myValue = $ rootScope.myValue;
}); $ b $($ window $ b}
]);
I have a javascript object which I need global to my angularjs application. When the application is about to be unloaded (due to a page refresh or some other scenario), I would like to persist the object to browser storage. I believe adding the object to $rootScope would fulfill the first requirement of making the object global, but writing the object to storage during the onbeforeunload
event, would require access to the $rootScope variable. Is it possible to detect a page unload event in angularjs?
This should do it, but I also suggest avoiding $rootScope
as global state is discouraged, and you might also wrap localStorage
in a service so that it can be injected and mocked for testing.
.run([
'$window',
'$rootScope',
function($window, $rootScope) {
$window.addEventListener('beforeunload', function() {
localStorage.myValue = $rootScope.myValue;
});
}
]);