2016-12-07 8 views
0

私はNGリピートと共通のブロックを持っている:ng-repeat内のローカル変数を計算して保存することはできますか?

<div ng-repeat="(position, task) in Tasks.plannedTasks"> 
    {{(task.plan - (TasksTimeSpent[task.id][task.worker]).toFixed(2)}} 
</div> 

とIF今、私は背景を設定する必要があります。task.planとtask.workerを変更し、この必要性の後にすることができ

{{(task.plan - (TasksTimeSpent[task.id][task.worker]).toFixed(2)}} < 0 

ステートメントをチェックして表示された値を変更する 式の結果を変数に保存することはできますか?(例:curDif)、この変数を表示し、私は式を2回計算したくありません。 変数はアプリケーションロジックには役に立たず、表示のためには必要だが、タスクが変更された場合はコントローラを使う必要があるので、コントローラで変数を計算する方法は悪い。変数を再計算してタスクのウォッチャーを使う必要がある。

+0

[AngularJS ng-repeatの反復要素の合計を計算する]の可能な複製(http://stackoverflow.com/questions/22731145/calculating-sum-of-repeated-elements-in-angularjs-ng-repeat) – hurricane

答えて

2

あなたはそのためのng-initを使用することができます。

<div ng-repeat="(position, task) in Tasks.plannedTasks"> 
    <ng-init ng-init="curDif = (task.plan - (TasksTimeSpent[task.id][task.worker]).toFixed(2)"> 
    {{curDif}} 
    </ng-init> 
</div> 
+0

いいねできます。ありがとう – Neversmile

1

あなたが背景を設定するだけでなくNG-クラスを使用することをお勧めします。

<div ng-repeat="(position, task) in Tasks.plannedTasks"> 

    <div ng-init="curDif = task.plan - (TasksTimeSpent[task.id][task.worker]).toFixed(2)" ng-class="'my-background':curDif < 0"> 


    </div> 

</div> 

次に、CSSを使用して背景をスタイルします。

+0

ありがとう。私はすでにそれを使用しています=)私の問題はng-repeatの中にローカル値を保存することでした – Neversmile

関連する問題