2012-08-15 11 views
5

Powiedzmy, że mam kontroler w aplikacji internetowej AngularJS, która ma tablicę danych, która przechowuje obiekty, które są bardzo podobne, ale wymagają innego szablonu w zależności od zmiennej składowej "typ". Na przykład:AngularJS: Odmiany w szablonie opartym na atrybucie

function fooCtrl($scope) { 
    $scope.bar = [ 
     {"name": "example 1", 
     "type": "egType1", 
     "text": "Some example text"}, 
     {"name": "example 2", 
     "type": "egType2", 
     "text": "Some example text"}, 
     {"name": "example 3", 
     "type": "egType3", 
     "text": "Some example text"}, 
    ]; 
} 

One mogłyby łatwo utworzyć szablon do wyprowadzania danych za pomocą dyrektywy NG-repeat następująco:

<ul> 
    <li ng-repeat="item in bar"> 
     {{item.name}} 
     <p>{{item.text}}</p> 
    </li> 
</ul> 

Jednak spowoduje to każdego elementu mającego taki sam wyświetlacz.

Jaka jest najlepsza metoda wyprowadzania wszystkich elementów na pasku przy możliwości zmiany szablonu w zależności od wartości item.type?

Odpowiedz

11

Przypuszczam, można użyć dyrektywy ngSwitch, z czymś takim:

<li ng-repeat="item in bar"> 
    <div ng-switch on="item.type"> 
     <div ng-switch-when="egType1"> 
      {{item.name}} 
      <p>{{item.text}}</p> 
     </div> 
     <div ng-switch-when="egType2"> 
      XXX {{item.name}} 
      <span>{{item.text}}</spab> 
     </div> 
     <div ng-switch-default> 
      DEFAULT {{item.name}} 
      <span>{{item.text}}</spab> 
     </div> 
    </div> 
</li> 
+0

Ów przydzieleniu czystsze niż przy użyciu dyrektywy i zapewnienie funkcji kompilacji – cubiclewar

Powiązane problemy