AngularJS - ngRepeat с несколькими типами объектов
У меня есть список элементов. Элементом может быть несколько вещей, скажем, список выглядит примерно так:
[userObject , vehicleObject , userObject , animalObject , animalObject]
Теперь я хочу отобразить список с директивой ngRepeat, которая будет использовать шаблон в соответствии с типом объекта (Полиморфный рендеринг). это можно сделать?
возможно, что-то вроде (ng-use) - это директива гипотетически):
<ul>
<li ng-repeat="item in items">
<img ng-use="item.type == 'user'" ng-src="item.src">
<a ng-use="item.type == 'vehicle'">{{item.link}}</a>
<span ng-use="item.type == 'animal'">{{item.name}}</span>
</li>
</ul>
Ответы
Ответ 1
<ul>
<li ng-repeat="item in items" ng-switch="item.type">
<img ng-switch-when="user" ng-src="item.src">
<a ng-switch-when="vehicle">{{item.link}}</a>
<span ng-switch-when="animal">{{item.name}}</span>
</li>
</ul>
Ссылка на API:
http://docs.angularjs.org/api/ng.directive:ngSwitch
Ответ 2
Хотя это не использует ng-switch, он оборачивается проблемой отсутствия поля типа, которое указал @DotNetHaggis.
<div ng-repeat="field in fields">
<div ng-if="field.user !== undefined">user info</div>
<div ng-if="field.vehicle !== undefined">vehicle info</div>
<div ng-if="field.animal !== undefined">animal info</div>
</div>