я хочу добавить
<div>Check All
<input type="checkbox" ng-model="allSelected" ng-model-options="{getterSetter: true}"/>
</div>
<div ng-repeat="item in Items">
<div class="col-md-4">
<label>
<input type="checkbox" ng-model="item.Selected" />{{item.Name}}
</label>
</div>
</div>
Я хочу добавить строку "hr" после проверки всех, затем после пункта 3 и последнего элемента Item6. может ли кто-нибудь сказать мне, должен ли я поместить этот hr-тэг, чтобы я получил строку после каждой строки? Вот мой плукер.
Я считаю, что вы можете добиться этого, используя синтаксис ng-repeat-start
/ng-repeat-end
в сочетании с ng-if и repeat $ index для показа только после каждого третьего элемента.
<hr>
<div class="row" ng-repeat-start="item in Items">
..
</div>
<hr ng-repeat-end ng-if="$index % 3 === 2">
См. Обновленный плункер
То, что вы концептуально хотите, чтобы ваш HTML выглядел следующим образом:
<div class="row">
<div class="col-4"></div>
<div class="col-4"></div>
<div class="col-4"></div>
</div>
<hr />
<div class="row">
<div class="col-4"></div>
<div class="col-4"></div>
<div class="col-4"></div>
</div>
<hr />
...
Один из вариантов - использовать внешний и внутренний ng-repeat. Сначала преобразуйте список элементов из [a, b, c, d, e, f, g, h]
в [[a, b, c], [d, e, f], [g, h]]
. Затем мы можем повторить по каждой "группе" сначала для строк, а затем повторить по отдельным элементам для столбцов.
<div class="row" ng-repeat-start="group in Items | groupArray:3">
<div class="col-4" ng-repeat="item in group"></div>
<hr ng-repeat-end />
Здесь плункер показывает, как это можно сделать.
Примечание. Эта опция имеет значительно больший удар по производительности из-за наличия нескольких ng-повторов.
Если вы не используете классы bootstraps row
/col-*
, можно создать настраиваемый компонент для отображения содержимого в столбцах. Это требует больше работы, но может быть намного более результативным. Я не буду приводить здесь пример кода, но он может работать как-то так:
<my-column-component items="myItems" columns="3">
<label>
<input type="checkbox" ng-model="$item.selected"> {{ $item.name }}
</label>
</my-column-component>
как этот?
<div>
Check All
<input type="checkbox" ng-model="allSelected" ng-model-options="{getterSetter: true}"/>
<hr />
</div>
<div ng-repeat="item in Items">
<div class="col-xs-4 col-md-4">
<label>
<input type="checkbox" ng-model="item.Selected" />{{item.Name}}
</label>
<hr />
</div>
</div>
<div ng-repeat="item in Items"><div class="col-xs-4 col-md-4">
<label>
<input type="checkbox" ng-model="item.Selected" />{{item.Name}}
</label>
</div>
<br>
<hr>
</div>
Вы можете повторять несколько DOM-номеров, используя ng-repeat-start
и ng-repeat-end
.
<div>Check All
<input type="checkbox" ng-model="allSelected" ng-model-options="{getterSetter: true}"/>
</div>
<div class="col-md-4" ng-repeat-start="item in Items">
<label>
<input type="checkbox" ng-model="item.Selected" />
{{item.Name}}
</label>
</div>
<hr ng-repeat-end>