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