Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用AngularJS$templateCache.get()?_Javascript_Angularjs_Templates_Caching - Fatal编程技术网

Javascript 如何使用AngularJS$templateCache.get()?

Javascript 如何使用AngularJS$templateCache.get()?,javascript,angularjs,templates,caching,Javascript,Angularjs,Templates,Caching,当我的Angular控制器初始化时,我需要缓存一些HTML文件 根据Angular,我可以通过以下方式向Angular添加HTML模板: $templateCache.get('templateId.html') 但我不能让它工作。我尝试在控制器和模块run()函数()中获取模板文件。但是我可以在网络控制台中看到模板没有被提取 app.run(function($templateCache) { $templateCache.get('templ.html'); }); 我做错了什么?您

当我的Angular控制器初始化时,我需要缓存一些HTML文件

根据Angular,我可以通过以下方式向Angular添加HTML模板:

$templateCache.get('templateId.html')
但我不能让它工作。我尝试在控制器和模块run()函数()中获取模板文件。但是我可以在网络控制台中看到模板没有被提取

app.run(function($templateCache) {
  $templateCache.get('templ.html');
});

我做错了什么?

您必须使用http请求获取html,然后才能将其存储在模板缓存中。例如:

$http.get('templ.html', {
    cache: $templateCache
}).then(function(result) {
    console.log(result);
});

您可以使用$templateRequest获取模板

$templateRequest服务运行安全检查,然后使用$http下载提供的模板,成功后将内容存储在$templateCache中。如果HTTP请求失败或HTTP请求的响应数据为空,将抛出$compile错误(可以通过将函数的第二个参数设置为true来阻止异常)。请注意,$templateCache的内容是可信的,因此当tpl类型为string且$templateCache具有匹配项时,将忽略对$sce.GetTrusteDrl(tpl)的调用


文档:$templateRequest

我误解了文档。我以为get()是“HTTP获取此模板URL”。但这只是一个getter方法。要向$templateCache提供带有HTTP GET的模板,请参阅所选答案。使用
$templateRequest
而不是
$HTTP
不是更好,因为它可以自动并以角度可预测的方式执行异步模板获取+缓存?