AngularJS proporciona ng-repeat para crear dinámicamente elementos basados en una matriz de datos. Cuando se trata de una cantidad significativa de elementos, alinearlos en columnas puede mejorar la interfaz de usuario y la legibilidad.
El enfoque preferido es transformar los datos dentro del controlador que utiliza la función fragmentada de JavaScript, que divide los datos en grupos de tamaño uniforme:
function chunk(arr, size) {
var newArr = [];
for (var i=0; iLos datos fragmentados transformados se pueden representar en la vista de la siguiente manera:
{{item}}
Filtrar en la vista (Precaución)
Aunque es posible, no se recomienda el uso de filtros para fragmentar los datos en la vista con fines de vinculación de datos. Si las entradas se utilizan dentro de la vista filtrada, puede generar inconsistencias.
<div ng-repeat="row in ['a','b','c','d','e','f'] | chunk:3">
<div class="column" ng-repeat="item in row">
{{($parent.$index*row.length) $index 1}}. {{item}}
</div>
</div>
Para alinear elementos verticalmente en lugar de horizontalmente, se puede utilizar una variación del método de fragmentación:
function columnize(input, cols) {
var arr = [];
for(i = 0; i < input.length; i ) {
var colIdx = i % cols;
arr[colIdx] = arr[colIdx] || [];
arr[colIdx].push(input[i]);
}
return arr;
}
<div ng-repeat="row in columns">
<div class="column" ng-repeat="item in row">
{{item}}
</div>
</div>
Otra opción para crear columnas verticales es aprovechar las columnas CSS:
.columns {
columns: 3;
}
<div class="columns">
<div ng-repeat="item in ['a','b','c','d','e','f','g']">
{{item}}
</div>
</div>
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3