我的angularjs应用程序基本上分为4个步骤:
$templateCache
,我们称之为template.html
我想,我应该在加载起始页时绕过$templateCache
。但是现在,我想尽快开始提取template.html
,即在脚本加载的同时。
我的代码中可能相关的部分看起来像
<script src='//ajax.googleapis.com/.../angular.min.js'></script>
<script src='/my.js'></script>
<link href='/my.css' media='all' rel='stylesheet'/>
在这里,my.js
包含我的所有脚本,并在与角度同时加载。是否允许我以相同的方式获取template.html
,以便将其放入浏览器的缓存中?
我尝试了两种预取可能性,都失败了:
<link href="template.html" rel="prefetch"/>
和
<iframe class=invisible src="template.html"></iframe>
第一个被取消,第二个来得太晚,无效。
答案 0 :(得分:0)
由于HTML无法尽快获取,整个script directive完全没有意义。
根据runTarm的建议,我最终生成了Javascript。所需要的只是
.factory('$templateCache', function($cacheFactory, $http, $injector) {
var cache = $cacheFactory('templates');
cache.put("MY_PAGE_1", "ESCAPED_TEXT_1");
cache.put("MY_PAGE_2", "ESCAPED_TEXT_2");
...
return {
get: function(url) {
var fromCache = cache.get(url);
return fromCache ? fromCache : $http.get(url);
}
};
}
在转义文本中,您必须遵守1024字符串文字长度限制并转义换行符和双引号。就是这样。