【问题标题】:ng-include compiles to a commentng-include 编译为注释
【发布时间】:2014-08-01 08:07:29
【问题描述】:

我有一个 Angular 应用程序,并且想在模板中添加其他作为 div。 ng-include 似乎是一个完美的选择。

在 main.html 中

<div id="page-wrapper">
<div ng-include src="'/partials/module.html'"></div>
</div>

在module.html中

<div class="module">
<h1>Module</h1>
</div>

所有文件都位于应用程序的 partials 文件夹中。

运行此程序时,在 html 代码中的位置,我得到 &lt;!-- ngInclude: --&gt;,并将 main.html 中的 div 替换为同样支持的 ng-include 标记,它编译为 &lt;!-- ngInclude: undefined --&gt;

有谁知道可能是什么问题?

【问题讨论】:

  • 检查网络流量,看看/partials/module.html的HTTP请求去哪儿了。这可能不是正确的路径。它应该是相对于应用程序的根目录,我猜不是。
  • 你能发布一个导致这个问题的代码的 jsfiddle 吗?
  • 如果你在 localhost 中运行,请检查路径,尝试运行 localhost:8080/partials/module.html ,这应该会显示正确的 html。
  • 没有对 /partials/module.html 的 HTTP 请求。我的树有 app、js、sass 和其他东西的根文件夹,app 中有 app.js,它路由到模板。 /的模板的路由是app/partials/main.html,module.html文件也在同一个文件夹下。那么到根目录的相对路径是什么?

标签: angularjs angularjs-ng-include


【解决方案1】:

我遇到了同样的问题,上面提到的解决方案都没有帮助我解决这个问题,它吃了我整整两天。终于在this link的帮助下想通了。

完成这项工作的解决方案还需要以下两个特征:

  1. 部分 html 应包含在单引号中
  2. 其次,需要提及文件的完整路径,即使该文件位于同一位置。

例如:

ABC
|
---- DEF
      |
      --- abc.html
      --- partial.html

所以如果 abc.html 有 ng-include 语法,那么它应该如下所示

<div ng-include="'ABC/DEF/partial.html'"></div>
                     OR
<ng-include src="'ABC/DEF/partial.html'"></ng-include>

【讨论】:

    【解决方案2】:

    我遇到了确切的问题,编译器可能找不到您提供的 src 路径。 删除路径中的第一个 / 。编译器会自动将 / 附加到根上下文并尝试查找路径。它对我有用。

    <div ng-include src="'/partials/module.html'"></div> 
    

    替换为

    <div ng-include src="'partials/module.html'"></div>
    

    【讨论】:

      【解决方案3】:

      几个小时后,我为自己解决了这个问题,就是在双引号之间使用单引号

      <!--it will not work-->
      <ng-include src="views/header.html"></ng-include>
      
      <!--it will work :)-->
      <!--Difference is single quotes along with double quotes around src string-->
      <ng-include src="'views/header.html'"></ng-include>
      

      【讨论】:

      • 我不知道你为什么被否决,但这解决了我的问题。谢谢。
      • 双引号内不必是单引号。它可以是单引号中的双引号。重点是内引号是数据的一部分,而不是标记的一部分。
      【解决方案4】:

      这一定是范围问题。确保$scope 对象被正确传递,并且不要忘记在您的主页中包含与partial 相关的控制器和服务!

      【讨论】:

        【解决方案5】:

        你只在使用 ng-include 作为元素时使用 src="":

        <ng-include src="'/partial.html'"></ng-include>
        

        当使用 ng-include 作为属性时,您将部分 URL 放在属性本身中:

        <div ng-include="'/partial.html'"></div>
        

        请参阅https://docs.angularjs.org/api/ng/directive/ngInclude 了解这两个用例。

        【讨论】:

        • 我使用第二个选项,但它仍然编译为注释。当我将 div 直接放入 html 中时,它可以工作。
        猜你喜欢
        • 2016-09-18
        • 2016-07-14
        • 1970-01-01
        • 1970-01-01
        • 2013-12-03
        • 2021-10-07
        • 2017-07-07
        • 1970-01-01
        相关资源
        最近更新 更多