Angularjs ng-repeat为每个第4项开始一个新行
Angularjs ng-repeat start a new row for each 4th item?
假设我有一个苹果清单,我想在每个篮子里放4个苹果。 在 HTML 中,它看起来像这样:
<div class="basket">
<span class="apple">Green</span>
<span class="apple">Green</span>
<span class="apple">Green</span>
<span class="apple">Green</span>
</div>
<div class="basket">
<span class="apple">Green</span>
<span class="apple">Green</span>
<span class="apple">Green</span>
<span class="apple">Green</span>
</div>
我希望能够在 Angualrjs 中使用 ng-repeat 来做到这一点:
<div class="basket" ng-repeat="apple in apples>
<span class="apple">{{apple.color}}</span>
</div>
每 4 个苹果创建一个新篮子等。
你试过吗,ng-if
<div ng-repeat="apple in apples" ng-if='$index % 4 == 0' class='basket'>
<span class="apple"> {{apples[$index].color}}</span>
<span class="apple"> {{apples[$index +1 ].color}}</span>
<span class="apple"> {{apples[$index + 2].color}}</span>
<span class="apple"> {{apples[$index + 3].color}}</span>
</div>
看褶皱机
我认为你最好的答案在于你如何构建你的模型。 我会以分层方式填充它,以最好地支持所需的 html 渲染。
控制器
app.controller('MainCtrl', function($scope) {
$scope.appleBaskets = [{
basketId: 1,
apples: [{
color: 'green'
}, {
color: 'red'
}, {
color: 'gold'
}, {
color: 'red'
}, ]
}, {
basketId: 2,
apples: [{
color: 'green'
}, {
color: 'red'
}, {
color: 'green'
}, {
color: 'yellow'
}]
}, {
basketId: 3,
apples: [{
color: 'green'
}, {
color: 'red'
}, {
color: 'green'
}, {
color: 'red'
}]
}]
});
.HTML
<body ng-controller="MainCtrl">
<div ng-repeat="appleBasket in appleBaskets">
<div>{{appleBasket.basketId}}</div>
<div ng-repeat="apple in appleBasket.apples">
<span>{{apple.color}}</span>
</div>
</div>
</body>
一种方法是拥有一个basket
数组,每个数组包含一个apple
数组。然后你可以这样嵌套ng-repeat
...
<div class="basket" ng-repeat="basket in baskets">
<span class="apple" ng-repeat="apple in basket.apples">{{apple.color}}</span>
</div>
如果您只想拥有一维苹果数组而不是包含苹果的篮子的二维数组,那么您可以使用 CSS 将苹果直观地分组为四维数组。
一种方法是设置一个名为 new-line
的 CSS 类,并定义它以设置display: block;
或任何你想用来强制新行的内容。
然后使用 ng-class
根据$index
值动态设置 CSS。
<div class="basket" ng-repeat="apple in apples" ng-class="{ 'new-line' : $index % 4 === 0 }">
<span class="apple">{{apple.color}}</span>
</div>
如果您知道类basket
的宽度,则可以将类apple
的 with 设置为总宽度的 25%:
.basket {
width: 500px;
}
.apple {
width: 125px;
}
相关文章:
- 如何从rails中的代码中删除新行( )
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 如何在脚本上添加新行
- 在不刷新整个网格的情况下,向Asp.net网格视图添加新行
- 字符串中的
标记未正确在 HTML 中创建新行 - 为什么文本在 li 标签中开始一个新行
- MySQL检索数据,为每个数据附加一个新行
- 如何在 ng-repeat 中的某个特定索引上开始一个新行
- 使用敲除foreach每隔2条记录创建一个新行
- Regex-任何一个或多个字符后面跟一个新行和等号
- JavaScript在HTML中创建新行,onclick将值粘贴在另一个的下面
- Angularjs ng-repeat为每个第4项开始一个新行
- 如何获取一行并将该行和文本字符串合并为一个新行
- 对于变量中的每一个新行,添加一个连字符
- 在JQuery .html()调用中包含一个Twig模板并删除新行
- 在最后一个输入字段中添加新行onkeyup
- 我怎样才能得到一个变量的内容直到第一个新行
- 使用 string.prototype 在每个第 8 个逗号之后创建一个新行
- 如何在最后一个表格行上插入新行
- 如何传递带有一个或多个嵌入的新行代码的字符串