プレーンHTMLデモから角型アプリケーションを構築する際に、ng-includeに余分なDOM要素を使用しないように心がけています。私は非常にスリムなHTMLで、完全に開発されたしっかりとDOM結合されたCSS(SASSから構築されています)を使って作業しています。リファクタリングは、どうしても避けたいものです。私は繰り返し要素であることを<セクション>を必要としますが、独自のロジックと異なる内容を持っているngincludeを使用するときに余分なDOMノードを使用しないようにする
<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>
:
は、ここで実際のコードです。内容と繰り返し回数はどちらもビジネスロジックに依存します。ご覧のとおり、ng-controllerとng-repeatを<セクションの>要素に入力することはできません。しかし、私が避けようとしている新しいDOMノードを挿入するのは何でしょうか。
私は何が欠けていますか?このベストプラクティスですか、それとも良い方法がありますか?
EDIT:ちょうど明確にするために、コメントで尋ねたとして、私は生成しようとしている最終的な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を使用したい理由(サブヘッダを.html)は、コードの清潔さを保つためのものです。私は、動的コンテンツを返すために、何らかの種類のng-switchを持つようにsubheader.htmlを考えます。
しかし、基本的に、下層の謙虚さは:は、DOMノードを使用せずに透過的にテンプレートの内容を含める方法はありますか?
EDIT2:ソリューションを再利用可能にする必要があります。 =)
バリエーションの例を追加できますか、今あなたが求めているものは? – Chandermani
申し訳ありません。明確にするために編集されました。 –
ng-includeは、タグ ' 'として使用でき、 'url'の内容以外のタグは出力されません。 –
Chandermani