'ng-include`找不到内联`ng-template`

时间:2015-03-20 17:48:45

标签: javascript angularjs angularjs-ng-include angularjs-templates angularjs-ng-template

我的视图正在加载嵌入式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

2 个答案:

答案 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>