2

I'm trying to ng-repeat something a defined number of times:

Here's the (reduced) HTML:

<div class="row" ng-repeat="r in getNumber(size) track by $rowIndex">
    <span class="slot" data-y-coord="{{$rowIndex}}"></span>
</div>

And here's the JS:

$scope.size = 48;
$scope.getNumber = (number) => {
      var arr = [];
      for(var i=0; i<number; i++) {
        arr.push(i);
      }
      return arr;
};

I get the error

Error: [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: r in getNumber(size) track by $rowIndex, Duplicate key: undefined, Duplicate value: 1

which I think is weird because I am using 'track by'.

Community
  • 1
  • 1

1 Answers1

4

try this,change $rowIndex to $index

<div class="row" ng-repeat="r in getNumber(size) track by $index">
    <span class="slot" data-y-coord="{{$index}}"></span>
</div>

AngularJS does not allow duplicates in a ng-repeat directive. link

byteC0de
  • 5,153
  • 5
  • 33
  • 66