Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

retain angular variables after page refresh

Tags:

I'm trying to figure out a way to keep my angular variables with page refresh / across controllers. My workflow is,

  • user logs in via facebook and gets an access token
  • users access token will be used with every request

I tried two ways,

1 - Assigning the token to a rootScope Not working

2 - By using a factory

#app.js 'use strict';  angular.module('recipeapp', [])  .run(['$rootScope', '$injector', 'Authenticate', function($rootScope,$injector, Authenticate){             $injector.get("$http").defaults.transformRequest = function(data, headersGetter) {                 $injector.get('$http').defaults.headers.common['auth-token'] = Authenticate.getToken();              }         }]);  #factory 'use strict'; angular.module('recipeapp')   .factory('Authenticate', function(){     var factory = {};     var accessToken = "";      factory.setToken = function(token) {        accessToken = token;     }     factory.getToken = function() {        return accessToken;     }      return factory;    })  #facebook controller I set the the token with every successful login Authenticate.setToken(data.app_token); 

But the problem is, If I refresh the page, Authenticate.getToken() becomes blank. I'm pretty new to angular and cannot figure out a way to retain my data after a page refresh

any help would be much appreciated

like image 795
sameera207 Avatar asked Sep 30 '14 10:09

sameera207


People also ask

How to keep values after page reload in Angular?

You can use localStorage . It is really easy to use.

How do you keep value after page reloading?

The easiest way to reload the current page without losing form data, use WebStorage where you have -persistent storage (localStorage) or session-based (sessionStorage) which remains in memory until your web browser is closed. window. onload = function() { var name = localStorage.

What happens when you refresh page Angular?

From then on, the Angular framework kick in and loads the appropriate modules and pages as route changes. When you refresh the page you lose all the state of the application since you are reloading the index. html with all the required dependencies again.

How do I stop angular refresh?

Here, i will give you simple example of disable f5 and browser refresh function in angular application. we will use window keyup and window keydown event to prevent browser page refresh in angular app. You can easily prevent browser refresh in angular 7, angular 8, angular 8 and angular 9 application.


2 Answers

You can use localStorage. It is really easy to use.

var token = "xxx"; localStorage.setItem("token", token); localStorage.getItem("token"); //returns "xxx" 
like image 78
aacanakin Avatar answered Oct 02 '22 07:10

aacanakin


When you refresh a page all your JavaScript context is lost (including all data saved in variables).

One way to maintaing information from one session to another is to use the browser's localStorage. In your case, you probably want to check ngStorage.

like image 42
bmleite Avatar answered Oct 02 '22 07:10

bmleite