2016-07-05 20 views
0

GETリクエストをAngularで実行してレスポンスを取得するときは、typeというプロパティを持つオブジェクトのリストがあります。このタイプ(場合によってはその他の追加チェック)によっては、オブジェクトの残りのプロパティを予測できます。例:だからプロパティに応じたAngularJSテンプレート

{ "type": "simpleObject", "name": "A Simple Object" } 
{ "type": "objectWithInteger", "name": "Another Object", "number": 10 } 

私はそれぞれ異なるオブジェクトのための適切なHTMLを持っているために、事前に定義されたテンプレートを適用することができるか、これらのオブジェクトのリストを反復処理?

たとえば、タイプが"simpleObject"の場合、simple-object.htmlテンプレートを使用します。 "objectWithInteger"の場合、object-with-integer.html部分です。

これはできますか?たぶんcomponentと?私はAngularをあまり経験していません。これが通常のシナリオではないことが分かります。 ngIncludeを使用することにより、

<ul> 
    <li ng-repeat="object in objects"> 
    {{ appropriate_template(object) }} 
    </li> 
</<ul> 

答えて

1

一つの解決策は、このような種類ごとにテンプレートファイルを作成することです:

だから、基本的には私のような何かを行うことができるようにしたいと思います

<ul> 
    <li ng-repeat="object in objects" ng-include="'/path/to/templates/'+object.type+'.html'"> 
    </li> 
</<ul> 

とそれに続いてsimpleObject.htmlのようなファイルがあります。 objectWithInteger.html

Name: {{object.name}}, Number: {{object.number}} 
+0

です。正確な 'object.type'という名前のhtmlファイルは望んでいませんが、' app.js'ファイルに、型が与えられた適切なテンプレートファイル名を返すメソッドを作ることができたと思います。 – dabadaba

+0

ええ、ちょうどそのファイルが存在することを確認してください;) –

0

NG-スイッチとNG-含まディレクティブを組み合わせて使用​​してください。

<div ng-repeat="object in objects"> 
    <div ng-switch="object.type"> 
     <div ng-switch-when="simpleObject"> 
     <ng-include src="'simpleObject.html'"></ng-include> 
     </div> 
     <div ng-switch-when="objectWithInteger"> 
     <ng-include src="'objectWithInteger.html'"></ng-include> 
     </div> 
    </div> 
    </div> 

ここで私は、これが最もエレガントな答えだと思う作業plunk

+0

この回答は受け入れられる回答である必要があります。 – developer033

関連する問題