Angular: Empty Fiddle

http://angularjs.org/

HTML

<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js"></script>
<div ng-controller="MyCtrl">
    <ul>
        <li ng-repeat="groups in items | chunk:2">
            <div ng-repeat="i in groups">{{i}}</div>
            </li>
    </ul>
</div>

JavaScript

var myApp = angular.module('myApp', []);


function MyCtrl($scope) {
    $scope.items = [{value: 0},{value: 1}, {value:2}, {value: 3} ];
    
    $scope.printItem = function(item){
        console.log('Printing item: '+item.value);
        return item.value;
    }
    
    $scope.$watch(function(){
        console.log('$digest cycle!');
    });
}

myApp.filter('chunk', function() {
  function chunkArray(array, chunkSize) {
    var result = [];
    var currentChunk = [];

    for (var i=0; i<array.length; i++) {
      currentChunk.push(array[i]);
      /*array[i].$$hashKey = "10000"+i;
      console.log(currentChunk, array[i])*/
      if (currentChunk.length == chunkSize) {
        result.push(currentChunk);
        currentChunk = [];
      }
    }

    if (currentChunk.length > 0) {
      result.push(currentChunk);
    }

    return result;
  }

  function defineHashKeys(array) {
    for (var i=0; i<array.length; i++) {
      array[i].$$hashKey = i;
      console.log(array[i]);
    }
  }

  return function(array, chunkSize) {
    if (!(array instanceof Array)) return array;
    if (!chunkSize) return array;

    var result = chunkArray(array, chunkSize);
    defineHashKeys(result);
    return result;
  }
});