0

我知道我遇到的问题,但我无法找到解决方法。无论我做什么,我都会收到一个摘要错误。我相信的问题是在 ng-repeat 中调用“getPlayerIcon”方法。

HTML:

 <div class="col-md-2" ng-repeat="player in team.players">
   <img class="card-img-player" ng-src="/{{player.position}}/{{getPlayerIcon(player.position)}}" data-holder-rendered="true" style="height: 270px; width: 100%; display: block;">
 </div>

AngularJS:

$scope.getPlayerIcon = function(position) {
 if ($scope[position] === undefined)
   $parse(position).assign($scope, 1);

$scope[position]++;
return $scope[position];
}

“玩家”包含一个“位置”字段,可以是防御者或攻击者。'getPlayerIcon' 方法将位置作为参数,然后创建一个具有该位置名称的范围变量,如果它是第一个遇到该位置的值,则值为 1,或者如果出现那个位置。

我遇到的问题是,在 ng-src 上调用一个方法每次在 ng-repeat 中调用它时都会更改值,这会导致臭名昭著的 indig 摘要错误:

angular.js:68 Uncaught Error: [$rootScope:infdig] 10 $digest - `iterations reached. Aborting!`

我怎样才能解决这个问题?我必须递增,因为例如,如果 team.players 中有 4 名防守者和 4 名攻击者,我希望能够使用 Defender/1、Defender/2、Defender/3、Defender/4、Attacker/ 加载图像1、攻击者/2、攻击者/3、攻击者/4。基本上我需要它来识别位置,并计算该位置以提取正确的图像。

帮助!

谢谢,FYP

4

1 回答 1

1

只需使用$index.

 <div class="col-md-2" ng-repeat="player in team.players track by $index">
   <img class="card-img-player" ng-src="/{{player.position}}/{{getPlayerIcon(player.position, $index)}}" data-holder-rendered="true" style="height: 270px; width: 100%; display: block;">
 </div>

这将为您提供循环中当前迭代的索引,然后无需在您的方法中进行增量(您可以传入 $index 值并将其加一)。

于 2016-07-01T21:25:24.357 回答