2016-05-02 5 views
3

ここでのコアの問題は、$ cookieをconfigブロックに挿入することができず、静的ファイルのロードをAngular Translateで行うことができないようです。 configブロック。私は、私の静的な翻訳ファイルのクエリパラメータとして使用したいと思う私のアプリのバージョンを含むクッキーが、リリース間のキャッシュ破棄のフォームを持っている。ここで

はコードです:

(function() { 
    'use strict'; 

    angular.module('vcp.core'). 
     config(configureTranslationResources); 

    function configureTranslationResources($translateProvider) { 

     var $cookies; 
     angular.injector(['ngCookies']).invoke(['$cookies', function(_$cookies_) { 
      $cookies = _$cookies_; 
     }]); 

     var vcpVersion = $cookies ? $cookies.get('vcp-version') : ''; 

     $translateProvider.useStaticFilesLoader({ 
      prefix: '/v2/assets/i18n/', 
      suffix: '.json?v=' + vcpVersion 
     }); 

    } 

})(); 

これは奇妙な感じ、より良い方法があるはずのように。 Angular Translateのドキュメントから、実行ブロック(このアプローチよりもはるかに優れているとは言えません)でスタティックファイルの読み込みを設定する方法や、設定内のクッキーを取得する方法がないようではありません$ cookiesProviderをブロックします。

おそらく、このアプローチは悪い考えであり、問​​題を解決する良い方法がありますか?

答えて

2

ページが動的に生成された場合は、バージョン番号をCookieではなくHTMLに入れることができます。例えば、1ページのアプリでindex.html中:vcp_versionは、サーバー側に注入され

<script> 
'use strict'; 
angular.module('vcp.settings', []) 
.constant('vcpVersion', '{{vcp_version}}'); 
</script> 

。デプロイメント中は静的なので、サーバーは生成されたHTMLをキャッシュできます。ありがとう、

angular.module('vcp.core', ['vcp.settings']). 
    config(configureTranslationResources); 

function configureTranslationResources($translateProvider, vcpVersion) { 
    ... 
+2

素晴らしいアイデア:あなたはこのようなあなたの設定機能にバージョン番号を注入できるよう

定数は、設定時に使用可能です。動的に生成されていなくても(この場合はそうではありませんが)、私はindex.htmlでビルドツールを使用して、それを設定するよりもはるかにクリーンな定数を作るという同じアイデアを使用することができますクッキーに入れて、そのように回してください。 –