Angularjs 以更为编程的方式应用类

Angularjs 以更为编程的方式应用类,angularjs,ng-class,Angularjs,Ng Class,我的项目用财务数据呈现很多表,其中一个要求是正数是绿色的,负数是红色的(还有一些其他样式)。我有这样做的类(“增益”和“损耗”),我知道我可以在ng class中有条件地应用它们,但这样做的重复性让我觉得可能有一种类似于过滤器的方法,我可以重复应用检查,而不必每次都详细说明 我可以欺骗并使用过滤器将输出包装在类的范围内,但这将有效地打破过滤器链接,所以我不会这样做 表的一部分可能如下所示: <tr> <td ng-repeat="month in report" ng-

我的项目用财务数据呈现很多表,其中一个要求是正数是绿色的,负数是红色的(还有一些其他样式)。我有这样做的类(“增益”和“损耗”),我知道我可以在
ng class
中有条件地应用它们,但这样做的重复性让我觉得可能有一种类似于过滤器的方法,我可以重复应用检查,而不必每次都详细说明

我可以欺骗并使用过滤器将输出包装在类的范围内,但这将有效地打破过滤器链接,所以我不会这样做

表的一部分可能如下所示:

<tr>
    <td ng-repeat="month in report" ng-class="{ loss : month.gross < 0, gain: month.gross > 0 }">{{ month.gross | currency }}</td>
</tr>
<tr>
    <td ng-repeat="month in report" ng-class="{ loss : month.net < 0, gain: month.net > 0 }">{{ month.net | currency }}</td>
</tr>
<tr>
    <td ng-repeat="month in report" ng-class="{ loss : month.profit < 0, gain: month.profit > 0 }">{{ month.profit | currency }}</td>
</tr>

{{month.gross | currency}
{{month.net | currency}
{{月.利润|货币}

有没有一种方法可以抽象出
ng类=“{loss:x<0,gain:x>0}”
还是我一直在重复它?我也遇到过类似的情况,我检查了两个以上的情况,但这肯定是更常见的情况。

好的,您可以做的是预处理结果并在类进入视图之前生成类名。通过这种方式,您可以执行month.classToUse='gain'或month.classToUse='loss'之类的操作。但这几乎不会节省,因为angular仍将创建观察程序来检查更改。我不确定如何执行,但这不是指令使用的场景吗?是的,听起来你在寻找指令。指令的成本甚至比简单的观察程序还要高。在处理方面,您还需要研究的是angular bind once:,这将阻止angular创建观察程序,因此您将节省一些处理。