Esta questão foi parcialmente tratada aqui: Angular.js ng-repeat em vários tr's
No entanto, isso é apenas uma solução alternativa, na verdade não aborda o problema principal, que é: como alguém pode usar ng-repeat em vários elementos sem um wrapper?
Por exemplo, jquery.accordion requer que você repita um elemento h3 e div, como alguém poderia fazer isso com ng-repeat?
javascript
jquery
angularjs
angularjs-ng-repeat
geoidésico
fonte
fonte
Para responder à pergunta de Andre acima em mais de 2 níveis de repetição de ng em uma tabela, você pode usar o início de repetição de vários ng para fazer isso.
<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>
Aqui está um exemplo de êmbolo
fonte
ATUALIZAÇÃO : Esta resposta está desatualizada. Por favor, veja a resposta de @IgorMinar e use padrões
ng-repeat-start
eng-repeat-end
diretivas.Existem duas opções:A primeira opção é criar uma diretiva que irá renderizar várias tags e substituir a tag de origem ( 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); } })
A segunda opção é usar o código-fonte atualizado do angular que ativa a diretiva ngRepeat do estilo de comentário ( 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>
fonte
element.replaceWith(newElement);
substituirá a tag de invólucro pelo que você precisa. também você pode ter um loop em sua diretiva e adicionar quantas tags forem necessárias ao tmpl.