AngularJS Example
HTML
<div ng-app="app">
<div ng-controller="MainController">
<select data-ng-model="numColumns" data-ng-options="columnValue as columnValue for columnValue in columnValues"></select>
<table border="1">
<tr data-ng-repeat="rows in (objects | myFilter:numColumns)">
<td data-ng-repeat="column in (objects | mySecondFilter:rows:numColumns)">
{{ column.entry }}
</td>
</tr>
</table>
</div>
</div>
CSS
table td{
padding:2px 5px;
}
JavaScript
angular.module('app', [])
.filter("mySecondFilter", function(){
return function(input, row, numColumns){
var returnArray = [];
for(var x = row * numColumns; x < row * numColumns + numColumns; x++){
if(x < input.length){
returnArray.push(input[x]);
}
else{
returnArray.push("");
}
}
return returnArray;
}
})
.filter("myFilter", function(){
return function(input, numColumns){
var filtered = [];
for(var x = 0; x < input.length; x++){
if(x % numColumns === 0){
filtered.push(filtered.length);
}
}
return filtered;
}
});
;
function MainController($scope){
$scope.columnValues = [];
for(var x = 0; x < 10; x++){
$scope.columnValues.push(x + 1);
}
$scope.objects = [ ];
for(var x = 65; x < 91; x++){
$scope.objects.push({
entry: String.fromCharCode(x)
});
}
$scope.numColumns = 3;
}