【问题标题】:Inline `ng-template` not found by `ng-include``ng-include`找不到内联`ng-template`
【发布时间】:2015-05-24 05:33:06
【问题描述】:

我有一个视图加载了嵌入的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

更新:

正如 cmets 和答案所指出的,我的代码的基本设计是正确的。但是某些原因导致ng-template(显然)无法使模板对系统可用。

我更新了我的代码以从 HTML 文件(而不是嵌入的模板)中提取代码,它工作正常。

是否有一种常见的情况会导致我遇到中断ng-template

【问题讨论】:

  • jsfiddle.net/nozbaveq 为我工作。所以问题不在于这部分代码:)
  • @ehlers - 是的,发生了一些奇怪的事情,请参阅更新以使其与常规文件一起使用。 ng-template 出了点问题,但我不知所措。

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


【解决方案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>

我遇到了同样的问题,并遇到了这篇文章。我现在可以看到导致此问题的原因,因此希望这可以帮助其他人解决此问题。

rgthree 的代码有效的原因是 text/ng-template 的 script 标签必须在 ng-app 的范围内。因此,可以将模板放在单独的 .js 文件中,但只需确保它在 HTML 页面上呈现时位于 ng-app 中,否则 angular 不会意识到它并会尝试从服务器。

【讨论】:

  • 作为您的回答的精湛解释帮助我解决了我的问题,这正是您在回答中所说的。+1
  • 谢谢,节省了三天的研究和尝试和错误
【解决方案2】:

对我来说似乎工作得很好。也许您在示例代码之外还有其他事情要做。

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

【讨论】:

  • 我使用ng-template 的能力肯定有问题。我将代码提取到一个文件中,它工作正常,但我宁愿将其保留到script 以减少文件计数。这很奇怪,我不确定是什么杀死了ng-template 功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-02
  • 1970-01-01
  • 2016-01-07
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
相关资源
最近更新 更多