私はこのような角度のテンプレートを持っています...
<div ng-repeat="message in data.messages" ng-class="message.type">
<div class="info">
<div class="type"></div>
<div class="from">From Avatar</div>
<div class="createdBy">Created By Avatar</div>
<div class="arrowTo">
<div class="arrow"></div>
<div class="to">To Avatar</div>
</div>
<div class="date">
<div class="day">25</div>
<div class="month">Dec</div>
</div>
</div>
<div class="main">
<div class="content">
<div class="heading2">{{message.title}}</div>
<div ng-bind-html="message.content"></div>
</div>
</div>
<br />
<hr />
<br />
</div>
バインドされているデータを表示するように JSfiddleを設定しました。
私がする必要があるのは、データの内容に応じて、「from」、「to」、「arrowTo」の div を条件付きで表示することです。
ログはこれです...
- データに「from」オブジェクトがある場合は、「from」div を表示してデータをバインドしますが、「createdBy」div は表示しません。
- 「from」オブジェクトがなく、「createdBy」オブジェクトがある場合は、「createdBy」div を表示してデータをバインドします。
- データに「to」オブジェクトがある場合は、「arrowTo」div を表示し、そのデータをバインドします。
または平易な英語で、from アドレスがある場合はそれを表示し、そうでない場合は代わりに誰がレコードを作成したかを表示し、to アドレスがある場合はそれも表示します。
私は ng-switch の使用を検討しましたが、データがない場合は空の div を残す余分なマークアップを追加する必要があると思います。さらに、スイッチ ディレクティブをネストする必要がありますが、それが機能するかどうかはわかりません。
何か案は?
アップデート:
私が独自のディレクティブを作成する場合 (方法を知っていれば!)、それをどのように使用したいかを示す擬似コードを次に示します...
<div ng-if="showFrom()">
From Template Goes Here
</div>
<div ng-if="showCreatedBy()">
CreatedBy Template Goes Here
</div>
<div ng-if="showTo()">
To Template Goes Here
</div>
関数/式が false と評価されると、これらはそれぞれ消えます。