2016-06-09 63 views
0

我是AngularJS的新手,看起來很簡單。 我想在空白頁面上重用AngluarJS LocalStorageModule (沒有UI,只執行一次並重定向)。調用Angularjs模塊一次

這裏是我的嘗試看起來像:

<html> 
 
<head> 
 
<script src="../bower_components/angular/angular.js"></script> 
 
<script src="../bower_components/angular-local-storage/dist/angular-local-storage.js"></script> 
 
<script> 
 
\t var myApp = angular.module('myApp', [ 'LocalStorageModule' ]) 
 
\t .factory(
 
\t \t \t function(localStorageService) { 
 
\t \t \t \t 
 
\t \t \t \t localStorageService.set('username', 'some-user'); 
 
\t \t \t \t localStorageService.set('token', 'somevalue')); 
 
\t \t \t \t window.location = location.protocol + '//' + location.hostname 
 
\t \t \t \t \t \t + (location.port ? ':' + location.port : ''); 
 
\t \t \t }); 
 
</script> 
 
</head> 
 
<body ng-app="myApp">You are being redirected 
 
</body> 
 
</html>

不幸的是,工廠函數不會被調用。 如果我用config替換工廠,函數會被調用,但localStorageServiceProvider不會公開我需要的set()方法。

我的練習的目的是在真正的AngularJS應用程序的本地瀏覽器存儲中存儲值,瀏覽器在上述代碼執行後被重定向到正確的位置,以便它可以讀取和使用存儲的值。

+0

我不能說我明白你的問題正確,但如果我是你首先需要正常'的.config()'這樣的模塊注入可以注入'LocalStorageModule'。之後,您可以使用'.run()'運行您需要運行一次的代碼。另外,使用'$ location'進行重定向等。記得在'.run()'函數調用中注入'$ location'和'LocalStorageFactory'。 '.factory()'函數用於創建自己的工廠,而不是重用現有的模塊/工廠。 –

+0

@AleksandarBencun我沒有將localStorageModule注入到.config()中。我改爲使用localStorageModuleProvider。我猜測這是不同的事情。 爲什麼$ location比我的方法更可取?如果你注意到這不是一個真正的AngularJS應用程序,我只是想重用一個AngularJS模塊。 感謝與.run()的提示,請看看。 –

+0

那麼,文檔中明確指出,您需要使用'var myApp = angular.module('myApp',['LocalStorageModule']);'進行初始模塊注入。之後,在注入功能模塊時需要使用'localStorageServiceProvider',例如'.run(function(localStorageServiceProvider){/ * code * /});' –

回答

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模塊與LocalStorageModule 100%兼容? (我無法觸及主應用程序) –

+0

根據文檔「如果localStorage不受支持,庫將默認爲cookie,而此行爲可被禁用。」你有沒有檢查過是否有任何cookie被設置爲名稱? – Don

+0

我不認爲他在使用ngStorage。這是OP中鏈接的一個不同的庫。 –