我在写一个需要模板的Angular指令。在Angular中加载模板可以通过将模板本身嵌入源代码<script type="text/ng-template">
中或在指令的配置中提供一个url来完成,例如templateUrl: "/path/to/template.html"
。正确包含Angular指令的模板
对于第三方指令,第一种方法是完全不可接受的,因为人们不会npm install
我的指令,然后做include("node_modules/mydirective/template.html")
(或同等),它只是感觉脏。
第二种方法不会出于同样的原因。该模板将位于node_modules
目录内,打包/部署网站后该目录不可公开访问。
我的想法是让开发者仅仅只包含模板指令本身包括以同样的方式:
<script type="text/javascript" src="/path/to/directive.js"></script>
<script type="text/ng-template" src="/path/to/directive.html"></script>
的问题是,第二条线是不行的(浏览器会抱怨意外的字符,我想是因为它仍试图解析获取内容的JS。
我发现,使用的ng-include
代替script src
实际获取的模板。但问题是,由当时的模板是牵强,我的指令早已运行了link
函数坠毁(因为找不到模板)。
有没有一种方法可以延迟我的指令,直到模板被提取或提供任何加载模板的方式?
尝试使用'ng-include'并将该模板放在js脚本之前。 –
@أنيسبوهاشم试过了,不起作用。 – alexandernst
赢得模板缓存! https://docs.angularjs.org/api/ng/service/$templateCache – iH8