我正在努力思考如何让 ng-include 不使用额外的 DOM 元素,因为我正在从纯 HTML 演示构建角度应用程序。我正在使用带有完全开发、紧密 DOM 耦合的 CSS(由 SASS 构建)的非常纤薄的 HTML,并且我想不惜一切代价避免重构。
这是实际的代码:
<div id="wrapper">
<header
ng-controller="HeaderController"
data-ng-class="headerType"
data-ng-include="'/templates/base/header.html'">
</header>
<section
ng-controller="SubheaderController"
data-ng-class="subheaderClass"
ng-repeat="subheader in subheaders"
data-ng-include="'/templates/base/subheader.html'">
</section>
<div
class="main"
data-ng-class="mainClass"
data-ng-view>
</div>
</div>
我需要<section>是一个重复元素,但有自己的逻辑和不同的内容。内容和重复次数都取决于业务逻辑。如您所见,将 ng-controller 和 ng-repeat 放在<section>元素上是行不通的。然而,插入一个新的 DOM 节点,这是我试图避免的。
我错过了什么?这是最佳做法还是有更好的方法?
编辑:只是为了澄清评论中的要求,我试图生成的最终 HTML 将是:
<div id="wrapper">
<header>...</header>
<section class="submenuX">
some content from controller A and template B (e.g. <ul>...</ul>)
</section>
<section class="submenuY">
different content from same controller A and template B (e.g. <div>...</div>)
</section>
<section class="submenuZ">
... (number of repetitions is defined in controller A e.g. through some service)
</section>
<div>...</div>
</div>
我想使用相同的模板 B (subheader.html) 的原因是为了代码整洁。我认为 subheader.html 有某种 ng-switch 以返回动态内容。
但基本上,潜在的问题是:有没有办法透明地包含模板的内容,而不使用 DOM 节点?
EDIT2:解决方案需要可重复使用。=)