Я хочу добавить строку, только если x в $scope.grp не оставляет остатка при делении на 3. Я пробовал следующий код.

 <div class="card">
  <div ng-repeat="x in grp">
     <div class="row">
        <div ng-if="x%3==0">
           <div class="row">
        </div>
    <div class="col col-33">
       /my rest of code here/
     </div>
     </div>
   </div>
<div>

Есть предложения, как это сделать?

-1
Vaibhav Rakheja 16 Дек 2015 в 14:38

3 ответа

Лучший ответ

Не уверен, верно ли следующее или нет. Но способ добиться этого заключается в следующем.

<div data-ng-app="" data-ng-init="grp=['one','two','three','four','five','six','seven']" class="container">
  <div ng-repeat="x in grp" ng-if="$index % 3 == 0" class="row">
     <div class="col-xs-3">{{grp[$index]}}</div>
     <div class="col-xs-3" ng-if="$index + 1 < grp.length">{{grp[$index+1]}}</div>
     <div class="col-xs-3" ng-if="$index + 2 < grp.length">{{grp[$index+2]}}</div>
   </div>
<div>

Я предполагаю, что grp является массивом строк и использовал $index для группировки.

Jsfiddle

1
Jithin 16 Дек 2015 в 12:34

Проверьте это: если напоминание равно 0, строка будет добавлена

<div class="card">
<div ng-repeat="x in grp">
  <div class="row">
    <div ng-if="x%3==0">
      <div class="row">
        reminder 0
      </div>
    </div>
    <div class="col col-33">
      my rest of code here
    </div>
  </div>
</div>

Вот код для контроллера

function ctrl($scope){
   $scope.grp=[1,2,3];   
}

Codepen: http://codepen.io/anon/pen/eJJKwr

0
Ubiquitous Developers 16 Дек 2015 в 11:50

Я не очень знаком с angularjs - однако ваша html структура в этом случае неверна. Ваша структура создаст пустой столбец "row" перед каждым третьим div. Я не знаю, есть ли способ просто открыть тег "div" в ng-if и закрыть его на более позднем этапе.

Вы должны рассмотреть просто создание массивов для ваших карт. Таким образом, в каждом чанке будет по 3 карты, а затем вы можете перейти к первому уровню чанков, а затем ко второму уровню вашего массива. Это будет выглядеть примерно так:

<div class="card">
    <div ng-repeat="grp in chunks">
        <div class="row">
            <div ng-repeat"x in grp"> // as mentioned, I got no clue about angularjs, so I don't know how to correctly address the values within the groups
                <div class="col col-33">
                    my rest of code here
                </div>
            </div>
        </div>
    </div>
</div>

Как упоминалось ранее, я понятия не имею о самом angularjs, однако вы должны иметь возможность создавать куски (разбивать ваш массив на меньшие массивы), например:

var chunks=[[1,2,3],[4,5,6],[7,8,9]];
0
Patrick Schumacher 16 Дек 2015 в 12:44