Создайте массив заголовков столбцов, содержащий 1… N с помощью ng-repeat - PullRequest
0 голосов
/ 19 мая 2018

AngularJS отслеживает по индексу, но из вложенного объекта в json

У меня есть объект json "$ scope.dayMonth", например:

[
 {
   "month": 1,
   "maxDay": 31
 },
 {
   "month": 2,
   "maxDay": 28
 },
 {
   "month": 3,
   "maxDay": 31
 },
 etc...
]

Итак, я хочу показать 31 строкув зависимости от дневного лимита.

Я пробовал что-то вроде этого:

 <tr>
     <th class="text-center nowrap"  ng-repeat="item in dayMonth track by $index">
        {{item.maxDay}}
     </th>
 </tr>

Я хотел бы получить следующее:

<th class="text-center nowrap" ng-repeat="days in dayMonth track by $index">
  {{$index+1}}
</th>

Но не для количества месяцев - длячисло maxDay.

Надеюсь, вы поймете мое мышление: P

1 Ответ

0 голосов
/ 19 мая 2018

Используйте функцию для создания массива от 1 до N:

$scope.range = function(n) {
  return Array.from({length: n}, (v, k) => k+1);
};

Демо

angular.module("app",[])
.controller("ctrl",function($scope) {
  var vm=$scope;
  vm.dayMonth = [
     {"month": 1, "maxDay": 31},
     {"month": 2, "maxDay": 28},
     {"month": 3, "maxDay": 31},
     //etc.
  ];
  vm.range = function(n) {
      return Array.from({length: n}, (v, k) => k+1);
  };
})
<script src="//unpkg.com/angular/angular.js"></script>
<body ng-app="app" ng-controller="ctrl">
    <div ng-repeat="monthHead in dayMonth">
      <h2>Month {{monthHead.month}}</h2>
      <table>
        <tr>
           <th ng-repeat="n in range(monthHead.maxDay)">{{n}}</th>
        </tr>
      </table>
    </div>
  </body>

См. Создание массива JavaScript, содержащего 1… N

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...