Вызовите модуль Angularjs один раз

0

Я новичок в 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, где браузер перенаправляется сразу после выполнения вышеуказанного кода, чтобы он мог читать и использовать сохраненное значение.

  • 0
    Я не могу сказать, что правильно понимаю ваш вопрос, но если я вам, то вам сначала нужен нормальный .config() чтобы модуль инжектора мог внедрить LocalStorageModule . После этого вы можете использовать .run() для запуска кода, который вам нужно запустить один раз. Также используйте $location для перенаправления и тому подобное. Не забудьте LocalStorageFactory $location и LocalStorageFactory в .run() функции .run() . Функция .factory() используется для создания ваших собственных фабрик, а не для повторного использования существующих модулей / фабрик.
  • 0
    @AleksandarBencun Я не получаю localStorageModule, вставленный в .config (). Вместо этого я получаю localStorageModuleProvider. Это разные вещи, я думаю. Почему $ location предпочтительнее моего подхода? Это не настоящее приложение AngularJS, если вы заметили, я просто пытаюсь повторно использовать модуль AngularJS. Спасибо за подсказку с .run (), посмотрю.
Показать ещё 5 комментариев
Теги:

2 ответа

1
Лучший ответ

Вам необходимо ввести модуль, настроить его и использовать его впоследствии.

//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 : '');
})
0

То, что вы хотели бы сделать, это использовать модуль ngStorage и его фабрики $ localStorage и $ sessionStorage для сохранения данных локально в браузере.

Затем перед перенаправлением сохранить значение:

$sessionStorage.someVal ="blah"

и после перенаправления прочитайте его:

$scope.val = $sessionStorage.someVal
  • 0
    Мое основное приложение использует LocalStorageModule. Вот почему я пытаюсь использовать это, чтобы обеспечить максимальное соответствие. Вы говорите, что модуль ngStorage на 100% совместим с LocalStorageModule? (Я не могу коснуться основного приложения)
  • 0
    согласно документам «Если localStorage не поддерживается, библиотека по умолчанию будет использовать файлы cookie. Это поведение можно отключить». Вы проверили, установлены ли какие-либо куки с именами?
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню