6

我有一个视图正在加载一个嵌入的视图,该视图在文件的后面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

4

2 回答 2

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 的 script 标签必须在 ng-app 的范围内。因此,可以将模板放在单独的 .js 文件中,但只需确保它在 HTML 页面上呈现时位于 ng-app 中,否则 angular 不会意识到它并会尝试从服务器。

于 2015-05-16T08:19:38.643 回答
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>

于 2015-03-20T18:39:08.067 回答