2016-10-18 2 views
0

Я хочу итерировать объекты на недельной основе. Допустим, что есть 31 день, и я должен показывать эти 31 даты на еженедельной основе. Я попытался использовать limitTo: 7, но, к сожалению, он не работает. Ниже кода, который я пробовал.Угловой ng-повтор на еженедельной основе

Я хочу, чтобы то же самое div, имеющее класс class="accordian-section", необходимо повторять на каждых 7 объектах. то есть первый 7 находится в 1 <div>. И для следующего 7 объекта то же самое нужно повторить.

<div class="accordian-section" data-ng-repeat="data in vm.dailyUsageList track by $index | limitTo: 7:7"> 
    <a id="analysisWeek1-title" href="#analysisWeek-1" role="button" data-toggle="collapse" area-controls="analysisWeek-1">Week 1 <span class=""></span></a> 
    <ul id="analysisWeek-1" area-labelledby="analysisWeek1-title" class="row position-relative panel-collapse collapse"> 
     <span class="sprite arrow grey-arrow"></span> 
     <li><span class="col-xs-14 padding0">{{data.date | date:'dd MMM yyyy'}}</span><span class="col-xs-2 padding0 text-align-right">{{data.usage}}MB</span></li> 
     <li><span class="col-xs-14 padding0">{{data.date | date:'dd MMM yyyy'}}</span><span class="col-xs-2 padding0 text-align-right">{{data.usage}}MB</span></li> 
     <li><span class="col-xs-14 padding0">{{data.date | date:'dd MMM yyyy'}}</span><span class="col-xs-2 padding0 text-align-right">{{data.usage}}MB</span></li> 
     <li><span class="col-xs-14 padding0">{{data.date | date:'dd MMM yyyy'}}</span><span class="col-xs-2 padding0 text-align-right">{{data.usage}}MB</span></li> 
     <li><span class="col-xs-14 padding0">{{data.date | date:'dd MMM yyyy'}}</span><span class="col-xs-2 padding0 text-align-right">{{data.usage}}MB</span></li> 
     <li><span class="col-xs-14 padding0">{{data.date | date:'dd MMM yyyy'}}</span><span class="col-xs-2 padding0 text-align-right">{{data.usage}}MB</span></li> 
     <li><span class="col-xs-14 padding0">{{data.date | date:'dd MMM yyyy'}}</span><span class="col-xs-2 padding0 text-align-right">{{data.usage}}MB</span></li> 
    </ul> 
</div> 
+0

Вы должны построить структуру данных, которая представляет данные, которые вы хотите отобразить. например вы можете иметь массив массивов, где внутренние массивы - это данные, разделенные на дни недели за этот месяц. Затем вы можете перебирать массивы, чтобы отображать свои данные. – Magrangs

+0

Могу ли я получить небольшой код кода, чтобы у меня появилась идея сделать материал? @Magrangs – Samir

+0

Пробуйте многомерный массив 5 * 7 span и имеют два ng-repeat. контроллер отвечает за подготовку данных, которые может отображать представление, а не то, что представление берет на себя эту ответственность. Такое преобразование легко выполняется на контроллере. Попробуйте это [SO Link] (http://stackoverflow.com/questions/36678928/nested-ng-repeat-for-multidimensional-array) для простого способа преобразования данных в виде многомерного массива. – Mahesh

ответ

1

Преобразование одномерного массива в многомерный массив. и Iterate Fiddle

function MyCtrl($scope) { 

     $scope.ArraySplit = function(array, chunk) { 
      var temparray = []; 
      for (i = 0, j = array.length; i < j; i += chunk) { 
       temparray.push(array.slice(i, i + chunk)); 
      } 
      return temparray; 
     } 


     $scope.arrayList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
          11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 
          21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]; 

     $scope.newList = $scope.ArraySplit($scope.arrayList, 7) 


    } 
+0

Спасибо @arun, эта идея работает для меня. – Samir