2016-08-02 8 views
0

私は角度がないので、愚かな質問ですが、私自身はこれを理解できませんでした。 私は、ngCookiesを使用してクッキーからトークンを取得するプロバイダを持っており、app.config内からアクセスする必要があるアプリがあります。私はいくつかの方法を試しましたが、返される変数ではなくサービスコードです。私は間違って何をしていますか?角度設定内の角度プロバイダの変数にアクセスできない

var app = angular.module('appClient', [ 
    'ngCookies' 
]); 

app.provider('getToken', function getTokenProvider() { 
    this.$get = ['getTokenService', function(getTokenService, $cookies) { 
    var token = $cookies.get('token'); 
    return token; 
    }] 
}); 

app.config(function ($resourceProvider, $httpProvider, getTokenProvider) { 
    var token = ? //need to get token from getTokenProvider here 
    $httpProvider.defaults.withCredentials = false; 
    $resourceProvider.defaults.actions = { 
    save: { method: 'POST', params: { token: token } }, 
    get: { params: { token: token } }, 
    query: { params: { token: token }, isArray: true }  
    }; 
}); 
+0

getTokenProviderを挿入できないというエラーが表示されますか? –

+0

いいえ、getTokenProviderが正しく挿入されています。 –

+0

なぜトークン 'getToken'プロバイダが残念ですか? 既にあなたの設定で既に 'var token = $ cookie.get( 'token')'を使用して、 – kiro112

答えて

0

getTokenProvider.token 

を使用するには、この行を追加します。これに副作用や欠点があるかどうか誰にでも教えてください。 「入手トークン」をインスタンス化するために使用される依存サービスのプロバイダを変更する任意のコードがある場合に問題を引き起こす可能性があり、これを使用して

:ここ

app.provider('getToken', function getTokenProvider() { 

     this.$get = ['$cookies', function($cookies) { 
     //$cookies.put("token","test"); 
     var token = $cookies.get('token'); 
     return token; 
     }] 

    }); 

    app.config(function (getTokenProvider,$injectorProvider) { 
     //instantiate or get the service here 
     //this should be how angular gets services 
     //$injectorProvider.$get returns the instance injector (the $injector service) 
     var token = $injectorProvider.$get().get("getToken"); 
     console.log(token); 

    }); 

plunker

UPDATEです。たとえば、この設定ブロックの後にngCookiesmodule.decorateがある場合、動作しません。

+0

これは実際に私が必要とするものですが、何らかの理由で$ injectorProvider(不明なプロバイダ)を使用している間、私はエラー:[$ injector:modulerr]すべてこれとまったく同じです。どんな考え? @MMhunter –

+0

実際に私は奇妙なplunkerからコードをコピー貼り付けてもこのエラーが発生します –

+0

うーん、私はちょうどチェックします。上のコードはangle 1.5.xでのみ動作します。古いバージョンでは$ injectorサービスが公開されていません – MMhunter

0
return { 
    token: token 
}; 

プロバイダで文を返し、あなたのコードに基づいてトリッキーなソリューションを取得し、コントローラ

+0

configで動作しません(getTokenProvider.tokenは定義されていません) –

関連する問題