web-dev-qa-db-ja.com

ページ更新後のangular変数を保持

私はangular変数をページ更新/コントローラー間で保持する方法を見つけようとしています。私のワークフローは、

  • ユーザーはfacebook経由でログインし、アクセストークンを取得します
  • ユーザーアクセストークンはすべてのリクエストで使用されます

私は2つの方法を試しました

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にかなり慣れていないので、ページの更新後にデータを保持する方法がわかりません。

どんな助けも大歓迎です

20
sameera207

localStorageを使用できます。とても使いやすいです。

var token = "xxx";
localStorage.setItem("token", token);
localStorage.getItem("token"); //returns "xxx"
19
aacanakin

ページを更新すると、JavaScriptコンテキストがすべて失われます(変数に保存されたすべてのデータを含む)。

あるセッションから別のセッションへの情報を維持する1つの方法は、ブラウザーのlocalStorageを使用することです。あなたの場合、おそらく ngStorage をチェックしたいでしょう。

11
bmleite

$ window.localStorageを使用して同じことを行いました。

受け入れられた答えに似ています。

var token = "xxx";
$window.localStorage.setItem("token",token);
$window.localStorage.getItem("token"); //returns "xxx"
$window.localStorage.removeItem("token"); //deletes token
4

クッキーを使用できます

単純な変数を配置するには

$cookies.put('user', 'abc');

オブジェクトを保存するには

$cookies.putObject('objSocket', anyObject);

cookieの使用からデータを取得するには

$cookies.getObject('objSocket');

そして

$cookies.get('user');

上記のコードを使用するには、cookies.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をコントローラーに、ngCookiesapp.js

詳細については https://docs.angularjs.org/api/ngCookies

3
Sunil Garg
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
0
Anirudh