Ответ 1
Вы можете использовать localStorage
. Это действительно легко использовать.
var token = "xxx";
localStorage.setItem("token", token);
localStorage.getItem("token"); //returns "xxx"
Я пытаюсь найти способ сохранить переменные angular
с обновлением страницы/между контроллерами. Мой рабочий процесс:
Я пробовал два пути,
1 - Присвоение токена значению rootScope
Не работает
2 - Используя 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);
Но проблема в том, что если я обновляю страницу, Authenticate.getToken()
становится пустым. Я новичок в angular
и не могу найти способ сохранить мои данные после обновления страницы.
любая помощь будет высоко оценена
Вы можете использовать localStorage
. Это действительно легко использовать.
var token = "xxx";
localStorage.setItem("token", token);
localStorage.getItem("token"); //returns "xxx"
Когда вы обновляете страницу, весь ваш контекст JavaScript теряется (включая все данные, сохраненные в переменных).
Одним из способов получения информации от одной сессии к другой является использование браузера localStorage. В вашем случае вы, вероятно, захотите проверить ngStorage.
вы можете использовать файлы cookie
Чтобы поставить простую переменную
$cookies.put('user', 'abc');
Чтобы сохранить объект
$cookies.putObject('objSocket', anyObject);
и для возврата данных из файлов cookie используйте
$cookies.getObject('objSocket');
и
$cookies.get('user');
Для использования вышеуказанного кода cookie.js cdnjs:
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.0-rc.0/angular-cookies.min.js"></script>
Теперь добавьте $cookies
в свой контроллер и ngCookies
в свой app.js
для более подробной информации https://docs.angularjs.org/api/ngCookies
Я сделал то же самое с помощью $window.localStorage.
Это похоже на принятый ответ.
var token = "xxx";
$window.localStorage.setItem("token",token);
$window.localStorage.getItem("token"); //returns "xxx"
$window.localStorage.removeItem("token"); //deletes token
use `localStorage.setItem("key",value);` to set the value.
use `localStorage.getItem("key");`to get the value.
use `localStorage.clear();`to clear the value which is set