Я делаю динамическое меню, получая данные меню через API. успешно получили данные API и отобразили их в HTML. но моя проблема в том, что у меня есть сложная структура в моем Html. Мне нужно закрыть элемент UL после 4-го элемента ЛИ, и я не могу этого сделать.
Я попытался поместить тройное условие в свой ng-repeat, и условие работает, но я не смог поместить элемент Html как </ul><ul> внутри условия.
Вот мой HTML:
<nav id = "topMenu">
<ul>
<li class = "tl_dd" data-ng-repeat = "headerMenu in headerMenu">
<a href = "{{headerMenu.url != ''?headerMenu.url:'javascript:;'}}" >{{headerMenu.menu_title}}</a>
<div class = "dd clear">
<ul>
<li data-ng-repeat = "submenu in headerMenu.submenu">
<a href = "{{submenu.url}}">{{submenu.title}}</a>
<!--Need to close ul here after every 4th li element-->
</li>
</ul>
</div>
</li>
</ul>
</nav>






Я думаю, вам было бы намного проще переместить 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>
Я рад, что смог помочь.
Вы можете получить длину массива и использовать ng-if.!!