Этот вопрос был частично рассмотрен здесь: Angular.js ng-repeat через несколько tr
Однако на самом деле это всего лишь обходной путь, на самом деле он не решает основную проблему, а именно: как можно использовать ng-repeat для нескольких элементов без оболочки?
Например, jquery.accordion требует, чтобы вы повторили элемент h3 и div, как можно сделать это с помощью ng-repeat?
javascript
jquery
angularjs
angularjs-ng-repeat
геодезический
источник
источник
Чтобы ответить на вопрос Андре выше о более чем двух уровнях ng-repeat в таблице, вы можете использовать несколько ng-repeat-start для этого.
<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>
Вот пример плункера
источник
ОБНОВЛЕНИЕ : этот ответ устарел. См. Ответ @IgorMinar и используйте стандарты
ng-repeat-start
иng-repeat-end
директивы.Есть два варианта:Первый вариант - создать директиву, которая будет отображать несколько тегов и заменять исходный тег ( 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); } })
Второй вариант - использовать обновленный исходный код angular, который включает директиву ngRepeat в стиле комментариев ( 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>
источник
element.replaceWith(newElement);
заменит тег оболочки на то, что вам нужно. также вы можете включить цикл в своей директиве и добавить столько тегов, сколько вам нужно, в tmpl.