Я думаю, вам было бы намного проще переместить ng-repeat на ul, чтобы позволить ng-repeat обрабатывать рендеринг в группах по четыре, вместо того, чтобы вручную пытаться поиграть с открывающими и закрывающими тегами html.Вы можете попробовать что-то вроде следующего:
js
$scope.getNumber = function(data,numberOfItems) {
if(data.length % numberOfItems === 0)
return new Array(data.length / numberOfItems);
else
return new Array(Math.floor(data.length/numberOfItems) + 1);
}
$scope.getData = function(data,index,numberOfItems){
var temp = data;
return temp.slice(index * numberOfItems,index * numberOfItems + numberOfItems);
}
html
<div class="dd clear">
<ul ng-repeat="item in getNumber(data,4) track by $index">
<li data-ng-repeat="name in getData(data,$index,4)">
{{name}}
</li>
</ul>
</div>
Демо