説明するのは複雑ですが、試してみます。
http://plnkr.co/edit/PrVXRvHAC7wtgHUEU1HB?p=preview
この例は必要に応じて機能しますが、これを達成した方法が気に入らないだけです。
例に示されていることを説明しようと思います。
<repeater>
<item name="Hello item">
<h4>Hello</h4>
<p>Lorem ipsum dolor sit amet</p>
</item>
<item name="Worlditem">
<h4>World</h4>
<em>Mauris elementum elementum enim at suscipit.</em>
</item>
</repeater>
<item>
repeater
ディレクティブは、自身をとして親に「登録」する必要がありavailable_item
ます。そして、それは現時点では表示されるべきではありません。
<repeater>
ディレクティブは、利用可能な項目のメニューを出力し、メニュー項目をクリックした後、項目のテンプレートをそのコンテンツに追加する必要があります。たとえば、repeater
テンプレートは次のようになります。
<div>
<ul>
<li ng-repeat="item in available_items">
<a href="javscript:;" ng-click="add2content(item)">{{item}}</a>
</li>
</ul>
<div id="content">
<div ng-repeat="item in content_items track by $index">
<ng-include src="item"></ng-include>
</div>
</div>
</div>
では、実際のplkr.co の例で何が気に入らないのでしょうか?
に含めなければなら<div ng-transclude></div>
ないのは好きではありません。repeater.html
そうし<item>
ないと、がコンパイルされなくなります。しかし、ページの読み込み時にアイテムを印刷する必要はありません。それらは単なるテンプレートです。テンプレートを空の文字列に設定<items>
しましたが、ソースに空の<item>
タグが表示され、これが気に入りません..
何が嫌なのかわからないけど、全部そろってる感じhard-coded
じゃない?
repeater
のディレクティブが次の順序でコンパイルされる場合:
- controller() - add2available() 関数が登録されます
- プレリンク()
- //今ではすべての
item
ディレクティブに行き、リピーターに自分自身を登録することができます - postLink()
- template() - リピーターがテンプレートを変更するようになりました。
ng-transclude
私はそれを行うことは不可能だと確信しています。また、私のコードで何が気に入らないのかわかりませんが、私のコードを改善する他の方法を見つけていただければ幸いです。
どうもありがとうございました!
PS<item>
ディレクティブをいくつかの<script type="text/ng-template" id="">
タグに置き換えることができることはわかっていますが<item>
、例で提供されているとおりにする必要があります。