To pytanie zostało częściowo rozwiązane tutaj: Angular.js ng-repeat w wielu tr
Jednak jest to tylko obejście, tak naprawdę nie rozwiązuje podstawowego problemu, którym jest: jak można użyć ng-powtórzenia w wielu elementach bez opakowania?
Na przykład jquery.accordion wymaga powtórzenia elementu h3 i div, jak można to zrobić z ng-repeat?
javascript
jquery
angularjs
angularjs-ng-repeat
geoidesic
źródło
źródło
Aby odpowiedzieć na powyższe pytanie Andre dotyczące więcej niż 2 poziomów ng-repeat w tabeli, możesz użyć wielu ng-repeat-start, aby to osiągnąć.
<tr ng-repeat-start="items in list"> <td>{{items.title}}</td> </tr> <tr ng-repeat-start="item in items"> <td>{{item.subtitle}}</td> </tr> <tr ng-repeat-end ng-repeat="value in item.values"> <td>{{value.col1}}</td> <td>{{value.col2}}</td> </tr> <tr ng-repeat-end></tr>
Oto przykład plunkera
źródło
AKTUALIZACJA : Ta odpowiedź jest nieaktualna. Zobacz odpowiedź @IgorMinar i użyj norm
ng-repeat-start
ing-repeat-end
dyrektyw.Istnieją dwie możliwości:Pierwsza opcja to stworzenie dyrektywy, która wyrenderuje kilka tagów i zastąpi tag źródłowy ( jsfiddle )
<div multi ></div> angular.module('components').directive('multi', function ($compile) { return { restrict: 'A', scope : { first : '=', last : '=', }, terminal:true, link: function (scope, element, attrs) { var tmpl = '', arr = [0,1,2,3] // this is instead of your repeater for (var i in arr) { tmpl +='<div>another div</div>' } var newElement = angular.element(tmpl); $compile(newElement)(scope); element.replaceWith(newElement); } })
Drugą opcją jest użycie zaktualizowanego kodu źródłowego angulara, który włącza dyrektywę ngRepeat w stylu komentarzy ( plnkr )
<body ng-controller="MainCtrl"> <div ng-init="arr=[0,1,2]" ></div> <!-- directive: ng-repeat i in arr --> <div>{{i}}</div> <div>{{ 'foo' }}</div> <!-- /ng-repeat --> {{ arr }} <div ng-click="arr.push(arr.length)">add</div> </body>
źródło
element.replaceWith(newElement);
zastąpi tag opakowania tym, czego potrzebujesz. również możesz mieć pętlę w swojej dyrektywie i dodać tyle tagów, ile potrzebujesz do tmpl.