1

我有一个使用 ng-repeat。也有一个正在工作的 ng-class true/false 条件。我可以在我的真/假陈述中添加另一个条件吗?

<tr ng-repeat="data in myData" ng-class="{true: 'green', false: 'red'}[data.IsPositive]">
    <td>
        {{data.Name}}
    </td>
    <td>
        {{data.CompanyName}}
    </td>
    <td>
        <span ng-show="data.Date | lessThanOneYear">Less than one year</span>
        <span ng-show="data.Date | lessThanOneYear">Greater than one year</span>
    </td>
</tr>

本质上,我想检查是否:

ng-class="[data.IsPositive] and [data.Date | lessThanOneYear]

因此,如果以上两个都为真,则应用 CSS 类绿色...如果为假,应用红色。


解决方案:

我不得不混合使用提供的 2 条建议。本质上,带有过滤器的条件需要被包裹在 () 中,所以:

ng-class="[data.IsPositive && (data.Date | lessThanOneYear)]
4

2 回答 2

1

是的你可以:

{true: 'green', false: 'red'}[data.IsPositive && secondCondition && x>3 && whatever]
于 2014-10-24T08:35:48.183 回答
1

通过这样做,您需要了解之间的表达式[]必须计算为您在关联数组中指定的索引之一{true: 'green', false: 'red'}

然后可以使用任何计算结果为真或假的表达式,在这种情况下是任何布尔表达式。

[data.IsPositive and data.Date | lessThanOneYear]
于 2014-10-24T08:39:00.937 回答