我的视图正在加载嵌入式text/ng-template
,后来文件中ng-include
找不到该视图。脚本块位于视图文件的最顶部:
<script type="text/ng-template" id="stringCondition">
<!-- template guts -->
</script>
我稍后在文件中加载:
<ng-include src="'stringCondition'"></ng-include>
但是在控制台中产生404错误:
GET http://localhost/~me/stringCondition 404 (Not Found)
我已尝试过几种命名变体(比如最后使用.html)并使用ng-include
作为属性而不是高级元素。一切都没有运气。
可能导致嵌入式ng-template
未在同一视图文件中注册ng-include
的原因是什么?
更新:
正如评论和答案所指出的,我的代码的基本设计是正确的。但有些事情导致ng-template
(显然)无法使模板可供系统使用。
我更新了我的代码以从HTML文件(而不是嵌入的模板)中提取,并且它可以正常工作。
是否存在我可能遇到的常见情况ng-template
?
答案 0 :(得分:15)
<div ng-app>
<script type="text/ng-template" id="stringCondition">
Yes, yes it did.
</script>
Did it work? <ng-include src="'stringCondition'"></ng-include>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
我遇到了同样的问题并且发现了这篇文章。我现在可以看到是什么导致了这个问题,所以希望这可以帮助其他人解决这个问题。
rgthree代码的工作原理是text / ng-template的脚本标记必须存在于ng-app的范围内。所以将模板放在一个单独的.js文件中是很好的,但只要确保它在HTML页面上呈现它在ng-app中,否则angular将不会意识到它并将尝试从服务器
答案 1 :(得分:1)
似乎对我来说很好。也许你的示例代码之外还有别的东西。
<div ng-app>
<script type="text/ng-template" id="stringCondition">
Yes, yes it did.
</script>
Did it work? <ng-include src="'stringCondition'"></ng-include>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>