Я изо всех сил пытаюсь задуматься о том, как включить ng-include, не использовать дополнительный элемент DOM, поскольку я создаю приложение angular из простой демонстрации HTML. Я работаю с довольно тонким HTML с полностью разработанным, тесно связанным с DOM CSS (построен из SASS), и рефакторинг - это то, чего я хочу избежать любой ценой.
Вот фактический код:
<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-контроллер и ng-repeat в <section> элемент не будет работать. Что бы было, однако, вставить новый DOM node, чего я пытаюсь избежать.
Что я упускаю? Это лучшая практика или есть лучший способ?
РЕДАКТИРОВАТЬ: просто чтобы уточнить, как указано в комментариях, окончательный 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-переключатель, чтобы возвращать динамический контент.
Но в основном подстилающий quiestion: есть ли способ включать содержимое шаблона прозрачно, без использования DOM node?
EDIT2. Решение должно быть повторно использовано. =)