Я новичок в AngularJS и, похоже, простая задача. Я хочу повторно использовать AnglarJS LocalStorageModule на пустой странице (без интерфейса, выполнить один раз и перенаправить).
Вот как выглядит моя попытка:
<html>
<head>
<script src="../bower_components/angular/angular.js"></script>
<script src="../bower_components/angular-local-storage/dist/angular-local-storage.js"></script>
<script>
var myApp = angular.module('myApp', [ 'LocalStorageModule' ])
.factory(
function(localStorageService) {
localStorageService.set('username', 'some-user');
localStorageService.set('token', 'somevalue'));
window.location = location.protocol + '//' + location.hostname
+ (location.port ? ':' + location.port : '');
});
</script>
</head>
<body ng-app="myApp">You are being redirected
</body>
</html>
К сожалению, фабричная функция не вызывается. Если я заменил фабрику на конфигурацию, функция вызывает вызов, но localStorageServiceProvider не предоставляет метод set(), который мне нужен.
Цель моего упражнения - сохранить ценность в локальном хранилище браузера для реального приложения AngularJS, где браузер перенаправляется сразу после выполнения вышеуказанного кода, чтобы он мог читать и использовать сохраненное значение.
Вам необходимо ввести модуль, настроить его и использовать его впоследствии.
//load and config the modules
var myApp = angular.module('myApp', [ 'LocalStorageModule' ]);
myApp.config(function (localStorageServiceProvider) {
localStorageServiceProvider
.setPrefix('samePrefixAsTheTargetApp');
});
//this function is called only once
myApp.run(function(localStorageService){
localStorageService.set('username', 'some-user');
localStorageService.set('token', 'somevalue'));
window.location = location.protocol + '//' + location.hostname
+ (location.port ? ':' + location.port : '');
})
То, что вы хотели бы сделать, это использовать модуль ngStorage и его фабрики $ localStorage и $ sessionStorage для сохранения данных локально в браузере.
Затем перед перенаправлением сохранить значение:
$sessionStorage.someVal ="blah"
и после перенаправления прочитайте его:
$scope.val = $sessionStorage.someVal
.config()
чтобы модуль инжектора мог внедритьLocalStorageModule
. После этого вы можете использовать.run()
для запуска кода, который вам нужно запустить один раз. Также используйте$location
для перенаправления и тому подобное. Не забудьтеLocalStorageFactory
$location
иLocalStorageFactory
в.run()
функции.run()
. Функция.factory()
используется для создания ваших собственных фабрик, а не для повторного использования существующих модулей / фабрик.