Ich habe eine eckige Vorlage, die so aussieht ...
<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>
Ich habe eine JSfiddle eingerichtet , um die gebundenen Daten anzuzeigen .
Was ich tun muss, ist, die Divisionen "von", "nach" und "Pfeil nach" abhängig vom Inhalt der Daten bedingt anzuzeigen.
Das Protokoll ist das ...
- Wenn die Daten ein "from" -Objekt enthalten, zeigen Sie das "from" -Div an und binden Sie die Daten, zeigen Sie jedoch nicht das "createdBy" -Div an.
- Wenn es kein "from" -Objekt gibt, aber ein "createdBy" -Objekt, zeigen Sie das div "createdBy" an und binden Sie die Daten.
- Wenn die Daten ein "to" -Objekt enthalten, zeigen Sie das div "Pfeil nach" an und binden Sie die Daten.
Oder im Klartext, wenn es eine Absenderadresse gibt, zeigen Sie sie an, andernfalls zeigen Sie, wer den Datensatz stattdessen erstellt hat, und wenn es eine Absenderadresse gibt, zeigen Sie dies auch.
Ich habe mir überlegt, ng-switch zu verwenden, aber ich denke, ich müsste zusätzliches Markup hinzufügen, das ein leeres div hinterlässt, wenn es keine Daten gibt. Außerdem müsste ich Switch-Direktiven verschachteln und bin mir nicht sicher, ob das funktionieren würde.
Irgendwelche Ideen?
AKTUALISIEREN:
Wenn ich meine eigene Direktive schreiben würde (wenn ich wüsste wie!), Dann ist hier ein Pseudocode, um zu zeigen, wie ich ihn verwenden möchte ...
<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>
Jedes von diesen würde verschwinden, wenn die Funktion / der Ausdruck als falsch bewertet würde.