2013-08-09 12 views
15

Witam Mam prosty przypadek użycia dla ng-repeat-start i end i działa dobrze, problem pojawia się, gdy chcę dodać wewnętrzne powtórzenie. Oto mój kodangularjs: ng-repeat-start i ng-repeat-end z wewnętrznym powtórzeniem ng

<tr ng-repeat-start="obj in rows" > 
    <td ng-repeat="e in obj.row">{{e}}</td> 
</tr> 
<tr ng-repeat-end> 
    <td colspan="4">{{obj.description}}</td> 
<tr> 

Wewnętrzna ng-repeat w td elementu nie działa, widzę komentarz ngRepeat kiedy sprawdzić kod źródłowy html, ale elementy td nie są tworzone.

<!-- ngRepeat: e in obj.row --> 

Moja brzydki obejście (biorąc pod uwagę, że wiem, o wielkości tego wektora) jest:

<tr ng-repeat-start="obj in rows" > 
    <td>{{obj.row[0]}}</td> 
    <td>{{obj.row[1]}}</td> 
    <td>{{obj.row[2]}}</td> 
    <td>{{obj.row[3]}}</td> 
</tr> 
<tr ng-repeat-end> 
    <td colspan="4">{{obj.description}}</td> 
<tr> 
+0

Czy dlatego, że szablon jest nieprawidłowy HTML? Widzę, że końcowym '' znacznikiem jest faktycznie '' –

Odpowiedz

17

Nie jestem pewien, czy używasz wartości kątowej 1.1.6, czy nie, ponieważ ng-repeat-start i ng-repeat-end nie są jeszcze dostępne w wersji 1.1.5 lub 1.0.7.

Jednak nie musisz używać nowych dyrektyw, aby to osiągnąć. Można po prostu wdrożyć go tak na teraz:

<table> 
    <tbody ng-repeat="obj in rows"> 
     <tr ng-repeat="e in obj.row"> 
      <td>{{e}}</td> 
     </tr> 
     <tr> 
      <td colspan="4">{{obj.description}}</td> 
     <tr> 
    </tbody> 
</table> 

Można użyć ng-repeat-start i ng-repeat-end aby go reimplement gdy jest oficjalnie wydana wersja 1.1.6 angularjs.

Demo

+0

Tak Używam wersji 1.1.6. Podoba mi się twoje rozwiązanie, które wypróbowałem wcześniej i zadziałało. Nie podoba mi się wiele elementów tbody, dlatego próbuję tej nowej funkcji. Dzięki za odpowiedź! – Jime

+0

@Jime Potrzebujesz tylko jednego 'tbody'. – zsong

+0

+1 dla przycisku demonstracyjnego. świetne rzeczy :) –

1

Powinieneś móc używać iteracji indeksu opartego na ominięcie tego:

<tr ng-repeat-start="obj in rows" > 
    <td ng-repeat="e in obj.row">{{obj.row[$index]}}</td> 
</tr> 
<tr ng-repeat-end> 
<!-- ... --> 
+0

problemem jest to, że dyrektywa powtarzania ng nie jest rozwiązywana, albo używam iteracji opartej na indeksach lub obiektu e – Jime

1

myślę, że może to być coś złego w swojej strukturze danych. Korzystanie Kątowymi 1.2.1 Działa to dla mnie

<div ng-app="myApp" ng-controller="myCtrl"> 
    <div class="h" ng-repeat-start="val in data">{{val.title}}</div> 
    <div ng-repeat="con in val.content"> 
     {{con}} 
    </div> 
    <div class="b" ng-repeat-end>footer</div> 
</div> 

Zobacz jsFiddle

Powiązane problemy