AngularJS — использование нескольких Coniditons в ng-классе

У меня есть файл ng-repeat. Также есть условие true/false ng-класса, которое работает. Могу ли я добавить еще одно условие к моему истинному/ложному утверждению?

<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 зеленого цвета. Если ложно, примените красный цвет.


Решение:

Мне пришлось использовать смесь двух предложенных предложений. По сути, условие с фильтром нужно обернуть в (), поэтому:

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

person Oam Psy    schedule 24.10.2014    source источник


Ответы (2)


Делая это, вы должны понимать, что выражение между [] должно оцениваться как один из индексов, указанных вами в ассоциативном массиве {true: 'green', false: 'red'}.

Затем можно использовать любое выражение, которое оценивается как истинное или ложное, в данном случае любое логическое выражение.

[data.IsPositive and data.Date | lessThanOneYear]
person yunandtidus    schedule 24.10.2014
comment
добавлено решение выше. - person Oam Psy; 24.10.2014
comment
Должно быть: {true: 'green', false: 'red'}[data.IsPositive and data.Date | lessThanOneYear] - person yunandtidus; 24.10.2014

Да, ты можешь:

{true: 'green', false: 'red'}[data.IsPositive && secondCondition && x>3 && whatever]
person BiAiB    schedule 24.10.2014
comment
добавлено решение выше. - person Oam Psy; 24.10.2014