使用Angular ng-repeat,我正在尝试在每个< li>中创建一个3< div>的轮播.我可以很容易地创建它每个幻灯片1 div但无法设法获得3.使用js,我通常使用模数(%)来确定索引是否可以被3整除,然后打开/关闭li那里.
这可能与Angular有关吗?
这就是我所拥有的(每张幻灯片1件):
<ul carousel class="carousel"> <li class="slide" ng-repeat="item in item.list.items" ng-init="itemIndex = $index"> <div class="item">{{item}}</div> </li> </ul>
这就是我想要实现的目标(每张幻灯片3件):
<ul class="carousel"> <!-- slide 1,with 3 items --> <li class="slide"> <div class="item">Item 1</div> <div class="item">Item 2</div> <div class="item">Item 3</div> </li> <!-- slide 2,with 3 items --> <li class="slide"> <div class="item">Item 4</div> <div class="item">Item 5</div> <div class="item">Item 6</div> </li> <!-- and so on... --> </ul>
编辑
这个问题被isherwood标记为重复.问题非常明确地询问在ng-if中使用模数,而不是控制器.建议的副本很接近,但是Betty St使用代码示例和链接回答了下面的确切问题.谢谢贝蒂!
解决方法
您可以使用%或groupBy.我总是使用这里描述的模数:
https://stackoverflow.com/a/25838091/595152
您的解决方案应如下所示:
<ul carousel class="carousel"> <li class="slide" ng-repeat="_ in item.list.items" ng-if="$index % 3 == 0"> <div class="item" ng-repeat="i in [$index,$index + 1,$index + 2]" ng-init="item = item.list.items[i]"> <div ng-if="item">{{item}}</div> </div> </li> </ul>
您需要在div.item中添加一个带有ng-if的div,以确保该项存在;)