我正在使用多个指令开发 AngularJS 应用程序。该指令的模板存储在一个单独的 html 文件中。编辑这些模板时,我的浏览器在重新加载后没有检测到任何更改,并且始终使用缓存版本。检测到源代码的任何其他更改并导致重新加载。
我猜问题出在 $templateCache 上,AngularJS 在加载模板时似乎使用了它。
我在 AngularJS 1.0.2 的源代码中找到的是来自第 4317 行的以下内容,它是 compileTemplateUrl() 的一部分:
$http.get(origAsyncDirective.templateUrl, {cache: $templateCache})
我想知道是否还有其他人遇到过此类问题,是否有办法告诉 AngularJS 何时缓存何时不缓存。
最佳答案
我知道这是一个老问题,但这里有一个更简单的修复方法,虽然有点 hack,但对我有用,而且不需要你对 $templateCache 做任何事情。
每当我遇到这个问题(我在指令模板中看到它,还有静态 JSON 文件),我都会在加载的 URL 末尾添加一个查询参数,如下所示:
...
templateUrl: "partials/template.html?1",
...
每当我对模板进行更改并且它没有重新加载时,我都会在最后增加该数字。由于浏览器不知道这是否对服务器有特殊意义,因此它应该尝试重新加载已更改的 URL,无论它是否被缓存。这也将确保文件在生产环境中重新加载。
关于javascript - 强制重新加载指令模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13450926/