Angularjs if-then-elseexpression式的构造

我可以以某种方式在angularjsexpression式中使用if-then-else构造(ternary-operator),例如我有函数$ 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> 

我知道我可以使用返回string的函数,我很有趣的可能性,使用if-then-else构造到expression式中。 谢谢。

Angularexpression式不支持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> 

更新: Angular 1.1.5增加了对三元运算符的支持:

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

你可以使用三元运算符,从1.1.5版本开始,就像在这个小型运算符 (1.1.5中的例子)中演示的那样:

由于历史的原因(也许plnkr.co因为某些原因下来)下面是我的例子的主要代码:

 {{true?true:false}} 

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

对于更复杂的testing,您可以使用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>