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の場合は値1を、その位置の場合は値をインクリメントしますその位置。

私がいる問題はNG-SRCのメソッドを呼び出すと、毎回値を変更し、それがエラーをダイジェスト悪名高いindigになりNGリピート、中に呼び出されるということです。

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

どのようにすることができますこれを修正しますか?たとえば、Defender/1、Defender/2、Defender/3、Defender/4、Attacker/4などで画像を読み込みたい場合、 1、攻撃者/ 2、攻撃者/ 3、攻撃者/ 4。基本的に私は位置を特定するためにそれを必要とし、正しいイメージを引き出すためにその位置を数えます。

ヘルプ!

おかげで、 FYP

+3

角度チェックのたびに値が変わるため、「OK、安定している」とは言えません。あなたはそれを変更する必要があります。 – Casey

+0

ダイジェストサイクルがどのように機能するかを本当に読む必要があります。 – charlietfl

+0

私はそれがわかりません。私は..にする必要があるので、値を変更せずにこれをどうやって行うのですか? – fypfyp

答えて

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> 

これはあなたのループで現在の繰り返しのインデックスを与えるであろうと、あなたの方法で増分を行う必要はないでしょう(あなたの代わりに$インデックス値を渡すと、それに1を追加することができます)。

関連する問題