web-dev-qa-db-ja.com

AngularJS-ng複数のオブジェクトタイプで繰り返します

アイテムのリストがあります。アイテムにはさまざまなものがあります。たとえば、リストが次のようなものであるとします。

[userObject , vehicleObject , userObject , animalObject , animalObject]

次に、オブジェクトのタイプに応じてテンプレートを使用するngRepeatディレクティブを使用してリストをレンダリングします(ポリモーフィックレンダリング)。これはできますか?

多分(ng-usehypotheticallyディレクティブ)のようなものです:

<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>
23
Shlomi Schwartz
<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

31
Umur Kontacı

これはng-switchを使用しませんが、@ DotNetHaggisが指摘したtypeフィールドがないという問題を回避します。

<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>
0
deejbee