AngularJS $ templateCache无法处理url参数

时间:2016-01-18 16:39:49

标签: javascript angularjs

我一直在浏览器缓存我的部分模板时遇到问题,所以我添加了一个请求拦截器,在我的url末尾添加一个参数来尝试修复它:

$httpProvider.interceptors.push(function() {
    return {
        request: function(config){
            if(config.url.indexOf('.tpl.html') > -1 || config.url.indexOf('.css') > -1){
                var separator = config.url.indexOf('?') === -1 ? '?' : '&';
                config.url = config.url + separator + 'lrvc=' + LR_VERSION;
            }

            return config;
        }
    };
});

基本上它只是将“lrvc = VERSION”添加到url的末尾。我在$ templateCache中使用的唯一模板来自以这种方式设置的第三方模块/指令。不幸的是,当我试图从$ templateCache中提取模板时,我遇到404错误;我猜是因为缓存试图拉出确切的字符串,这与那里的url参数不匹配。

  

获取https://my.local.domain/popover/popover.tpl.html?lrvc=2.3.2 404(未找到)

有没有办法让$ templateCache将其视为普通网址?或者我必须以不同的方式处理这些网址吗?

1 个答案:

答案 0 :(得分:2)

您只需添加if (!$templateCache.get(config.url))支票即可。

P.S。对于真实的项目,迟早你会使用一些构建工具来构建你的js项目。您可以使用该工具进行缓存清除。 (即grunt中的grunt-cache-bust)