Angularjs 如何使用$cookies缓存静态文件

Angularjs 如何使用$cookies缓存静态文件,angularjs,angular-translate,angular-cookies,Angularjs,Angular Translate,Angular Cookies,这里的核心问题是我不能将$cookies注入配置块,而配置静态文件加载似乎只能在配置块中完成。我有一个包含我的应用程序版本的cookie,我想用它作为静态翻译文件的查询参数,以便在发布之间有一种缓存破坏形式 代码如下: (function( ) { 'use strict'; angular.module( 'vcp.core' ). config( configureTranslationResources ); function configure

这里的核心问题是我不能将$cookies注入配置块,而配置静态文件加载似乎只能在配置块中完成。我有一个包含我的应用程序版本的cookie,我想用它作为静态翻译文件的查询参数,以便在发布之间有一种缓存破坏形式

代码如下:

(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文档中直观地了解如何在run块中配置静态文件加载(这感觉并不是比这种方法好得多),而且似乎也没有办法通过$cookiesProvider获取配置块中的cookie


也许这种方法是个坏主意,有更好的方法来解决这个问题吗?

如果页面是动态生成的,您可以将版本号放在HTML中,而不是放在cookie中。例如,在单页应用程序的
index.html
中:

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

好主意,谢谢。即使它不是动态生成的(在本例中不是),我也可以使用构建工具在index.html中对其进行编译,并且仍然使用相同的想法将其设置为常量,这似乎比在cookie中设置并以这种方式传递要干净得多。
angular.module( 'vcp.core', ['vcp.settings'] ).
    config( configureTranslationResources );

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