为什么我无法使用<script>标记加载自定义模板

时间:2016-08-25 06:00:30

标签: javascript angularjs templates angularjs-templates

我有一个要求,我需要通过自定义模板替换库中的许多模板。我不想在库中分叉原始模板。

&#xA;&#xA;

当我在index.html页面中加载模板时,如:

&#xA;&#xA ;
 &lt; script type =“text / ng-template”id =“first-template”&gt;&#xA; &lt; div class =“view”&gt;&#xA; {blah} {blah}&#xA; &lt; / div&gt;&#xA;&lt; / script&gt;&#xA;  
&#xA;&#xA;

一切正常。但我有很多这些并且不想将所有这些保留在index.html中。我尝试使用 src 属性加载它们,但之后它们没有加载。

&#xA;&#xA;

我尝试将模板保存为 .html < / code>和 .js 。两者都没用。为什么会如此。这两种方式都不是同样的目的。

&#xA;&#xA;

我发现了一个类似的问题 here ,但是讨论太短,没有切实的解决方案。

&#xA;&#xA;

有人可以解释详细的逻辑和解决方案吗?

&#xA;

1 个答案:

答案 0 :(得分:0)

另一个问题是,他们文件的响应的Content-Type标题是text / html,它与脚本标记不匹配,因此被浏览器忽略。

您的服务器需要以mimetype text/ng-template的形式提供模板文件请求。

假设你的模板是.tpl,在Apache配置或.htaccess中你可以这样做:

AddContentType tpl text/ng-template

强制使用预期的mimetype提供tpl文件。