Конструкция Angularjs if-then-else в выражении

Могу ли я каким-то образом использовать конструкцию if-then-else (тройной оператор) в выражении angularjs, например, я имею функцию $scope.isExists(item), которая должна возвращать значение bool. Я хочу что-то вроде этого,

<div ng-repeater="item in items">
    <div>{{item.description}}</div>
    <div>{{isExists(item) ? 'available' : 'oh no, you don't have it'}}</div>
</div>

Я знаю, что могу использовать функцию, возвращающую строку, мне интересно, как использовать конструкцию if-then-else в выражение. Спасибо.

Ответы

Ответ 1

Angular выражения не поддерживают тернарный оператор до 1.1.5, но его можно эмулировать следующим образом:

condition && (answer if true) || (answer if false)

Итак, в примере, что-то вроде этого будет работать:

<div ng-repeater="item in items">
    <div>{{item.description}}</div>
    <div>{{isExists(item) && 'available' || 'oh no, you don't have it'}}</div>
</div>

UPDATE: Angular 1.1.5 добавлена ​​поддержка тройных операторов:

{{myVar === "two" ? "it true" : "it false"}}

Ответ 2

Вы можете использовать троичный оператор начиная с версии 1.1.5 и выше, как показано в этом небольшом плункере (пример в 1.1.5):

По историческим причинам (возможно, по какой-то причине в будущем произойдет сбой plnkr.co) вот основной код моего примера:

{{true?true:false}}

Ответ 3

Вы можете легко использовать ng-show, например:

    <div ng-repeater="item in items">
        <div>{{item.description}}</div>
        <div ng-show="isExists(item)">available</div>
        <div ng-show="!isExists(item)">oh no, you don't have it</div>
    </div>

Для более сложных тестов вы можете использовать инструкции ng-switch:

    <div ng-repeater="item in items">
        <div>{{item.description}}</div>
        <div ng-switch on="isExists(item)">
            <span ng-switch-when="true">Available</span>
            <span ng-switch-default>oh no, you don't have it</span>
        </div>
    </div>

Ответ 4

Это можно сделать в одну строку.

{{corretor.isAdministrador && 'YES' || 'NÂO'}}

Использование в теге td:

<td class="text-center">{{corretor.isAdministrador && 'Sim' || 'Não'}}</td>