是否有可能在ng-repeat中计算并保存局部变量?

时间:2016-12-07 08:56:13

标签: angularjs

我有一个带有ng-repeat的公共块:

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

现在我需要设置背景:

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

task.plan和task.worker可以更改,之后需要检查if语句和更改显示的值 是否可以将表达式结果保存在变量中(例如:curDif),显示此变量并检查变量内部是否?我不想两次计算表达式。 在控制器中计算变量的方法很糟糕,因为变量对于应用程序逻辑是无用的,只需要显示,但是如果任务发生变化则需要使用控制器 - 我需要重新计算变量并使用观察程序进行任务。

2 个答案:

答案 0 :(得分:3)

您可以使用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>

答案 1 :(得分:1)

您可能也想使用ng-class来设置背景。

<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设置背景样式。