javascript jquery angularjs angularjs-ng-repeat

javascript - Angular.js ng-repeat en mĂșltiples elementos



jquery angularjs (3)

Esta pregunta se ha abordado en parte aquí: Angular.js ng-repeat en varios tr

Sin embargo, eso es solo una solución, en realidad, no aborda el problema central, que es: ¿cómo se puede usar ng-repeat en múltiples elementos sin un contenedor?

Por ejemplo, jquery.accordion requiere que repita un elemento h3 y div, ¿cómo podría uno hacer esto con ng-repeat?


Ahora tenemos un soporte adecuado para esto, por favor mira:

Commmit AngularJs

con este cambio ahora puedes hacer:

<table> <tr ng-repeat-start="item in list"> <td>I get repeated</td> </tr> <tr ng-repeat-end> <td>I also get repeated</td> </tr> </table>


Para responder a la pregunta anterior de Andre sobre más de 2 niveles de ng-repeat en una tabla, puede usar múltiples ng-repeat-start para lograr esto.

<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>

Aquí hay un ejemplo de plunker


ACTUALIZACIÓN : Esta respuesta está desactualizada. Consulte @IgorMinar answer y utilice las directivas estándar ng-repeat-start y ng-repeat-end .

Hay dos opciones:

La primera opción es crear una directiva que represente varias etiquetas y reemplace la etiqueta fuente ( 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); } })

La segunda opción es usar el código fuente actualizado de angular que habilita el estilo de comentario ngRepeat directive ( 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>