ng-include的正确语法是什么?

jac*_*cob 397 javascript html5 repeater include angularjs

我正在尝试在其中包含一个HTML代码段ng-repeat,但我无法让include工作.似乎当前的语法与ng-include以前的语法不同:我看到许多例子使用

<div ng-include src="path/file.html"></div>
Run Code Online (Sandbox Code Playgroud)

但在官方文档中,它表示要使用

<div ng-include="path/file.html"></div>
Run Code Online (Sandbox Code Playgroud)

但是然后在页面上显示为

<div ng-include src="path/file.html"></div>
Run Code Online (Sandbox Code Playgroud)

无论如何,我试过了

<div ng-include="views/sidepanel.html"></div>
Run Code Online (Sandbox Code Playgroud)
<div ng-include src="views/sidepanel.html"></div>
Run Code Online (Sandbox Code Playgroud)
<ng-include src="views/sidepanel.html"></ng-include>
Run Code Online (Sandbox Code Playgroud)
<ng-include="views/sidepanel.html"></ng-include>
Run Code Online (Sandbox Code Playgroud)
<ng:include src="views/sidepanel.html"></ng:include>
Run Code Online (Sandbox Code Playgroud)

我的代码片段不是很多代码,但是它有很多内容; 我在里面ng-repeat动态加载模板可能会导致问题,所以我用sidepanel.html单词替换了内容foo,但仍然没有.

我也尝试直接在页面中声明模板,如下所示:

<script type="text/ng-template" id="tmpl">
    foo
</script>
Run Code Online (Sandbox Code Playgroud)

并贯穿ng-include引用脚本的所有变体,但id仍然没有.

我的页面中有更多内容,但现在我已将其删除到这个:

<!-- index.html -->
<html>
<head>
<!-- angular includes -->
</head>
<body ng-view="views/main.html"> <!-- view is actually set in the router -->
    <!-- views/main.html -->
    <header>
        <h2>Blah</h2>
    </header>
    <article id="sidepanel">
        <section class="panel"> <!-- will have ng-repeat="panel in panels" -->
            <div ng-include src="views/sidepanel.html"></div>
        </section>
    </article>
<!-- index.html -->
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

标题呈现,但我的模板没有.我在控制台或Node中没有错误,如果我单击src="views/sidepanel.html"开发工具中的链接,它会将我带到我的模板(并显示foo).

jac*_*cob 770

你必须src在双引号内单引号你的字符串:

<div ng-include src="'views/sidepanel.html'"></div>
Run Code Online (Sandbox Code Playgroud)

资源

  • 这样做的原因是ng标签中的任何字符串实际上都被评估为角度表达式.''告诉它这是一个字符串表达式. (60认同)
  • @Gepsens:一旦你知道它就有意义了.如果文档提到它显然是很好的. (37认同)
  • 我同意,我们肯定需要对Angular和布局系统进行文档编制. (7认同)
  • 是的,前几天这让我感到困惑.有点相关的答案http://stackoverflow.com/questions/13811948/different-ng-includes-on-the-same-page-how-to-send-different-variables-to-each/13812605#13812605 (4认同)

小智 132

    <ng-include src="'views/sidepanel.html'"></ng-include>
Run Code Online (Sandbox Code Playgroud)

要么

    <div ng-include="'views/sidepanel.html'"></div>
Run Code Online (Sandbox Code Playgroud)

要么

    <div ng-include src="'views/sidepanel.html'"></div>
Run Code Online (Sandbox Code Playgroud)

要记住的要点:

- > src中没有空格

- >请记住在src的双引号中使用单引号

  • `ng-include =''...'"`语法肯定看起来更好. (8认同)

Ben*_*ren 49

对于那些故障排除,重要的是要知道ng-include要求url路径来自app根目录而不是来自partial.html所在的同一目录.(而partial.html是可以找到内联ng-include标记标记的视图文件).

例如:

正确:div ng-include src ="'/views/partials/tabSlides/add-more.html'">

不正确:div ng-include src ="'add-more.html'">

  • 实际上,这并不完全正确:路径可以是相对的,但它是相对于实例化应用程序的html文件.在你的"不正确"的例子中,如果`add-more.html`与`app.html`位于同一目录中,那将会有效.在我的回答中,`views /`与`app.html`位于同一目录中. (5认同)

Bal*_*nce 9

对于那些正在寻找部分最短的"项目渲染器"解决方案的人来说,所以ng-repeat和ng-include的组合:

<div ng-repeat="item in items" ng-include src="'views/partials/item.html'" />

实际上,如果你像这样使用一个转发器,它会起作用,但不适用于其中两个转发器!Angular(v1.2.16)会因为某些原因而出于某种原因而变得惊慌失措,因此以前xhtml方式关闭div会更安全:

<div ng-repeat="item in items" ng-include src="'views/partials/item.html'"></div>


BG *_*uno 9

也许这对初学者有帮助

<!doctype html>
<html lang="en" ng-app>
  <head>
    <meta charset="utf-8">
    <title></title>
    <link rel="icon" href="favicon.ico">
    <link rel="stylesheet" href="custom.css">
  </head>
  <body>
    <div ng-include src="'view/01.html'"></div>
    <div ng-include src="'view/02.html'"></div>
    <script src="angular.min.js"></script>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)


Jac*_*kal 7

这对我有用:

ng-include src="'views/templates/drivingskills.html'"
Run Code Online (Sandbox Code Playgroud)

完整的div:

<div id="drivivgskills" ng-controller="DrivingSkillsCtrl" ng-view ng-include src="'views/templates/drivingskills.html'" ></div>
Run Code Online (Sandbox Code Playgroud)

  • 你不应该把'ng-view`和`ng-inclue`组合在同一个元素上; 应在路由器中配置src(参见[templateUrl](https://docs.angularjs.org/api/ngRoute/provider/$routeProvider#when)). (2认同)