У меня есть шаблон angular, который выглядит так:
<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, чтобы показать связанные данные.
Что мне нужно сделать, так это то, что div из "from" , "to" и "arrowTo" показывают условно, в зависимости от содержимого данных.
Журнал - это...
- Если в данных есть объект "from" , тогда отобразите "из" div и привяжите данные, но не покажите div "createdBy" .
- Если объект "from" отсутствует, но есть объект "createdBy" , тогда отобразите div "createdBy" и привяжите данные.
- Если в данных есть объект "to", тогда отобразите div "arrowTo" и привяжите его.
Или на простом английском языке, если есть адрес, покажите его, иначе покажите, кто создал запись, а если есть адрес, то также покажите это.
Я изучил использование ng-switch, но я думаю, что мне пришлось бы добавить дополнительную разметку, которая оставила бы пустой div, если бы не было данных. Плюс мне нужно было бы установить директивы switch, и я не уверен, что это сработает.
Любые идеи?
UPDATE:
Если бы я написал свою собственную директиву (если бы я знал, как!), то вот какой-то псевдо-код, чтобы показать, как я хочу его использовать...
<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.