如何使用AngularJS(在模板中)实现三元?

使用一些html属性(类和样式)而不是创建和调用控制器的函数会很好。


当前回答

这个答案早于1.1.5版本,当时$parse函数中没有合适的三元。如果你在一个较低的版本,或者作为过滤器的例子,可以使用这个答案:

angular.module('myApp.filters', [])
  
  .filter('conditional', function() {
    return function(condition, ifTrue, ifFalse) {
      return condition ? ifTrue : ifFalse;
    };
  });

然后用它作为

<i ng-class="checked | conditional:'icon-check':'icon-check-empty'"></i>

其他回答

  <body ng-app="app">
  <button type="button" ng-click="showme==true ? !showme :showme;message='Cancel Quiz'"  class="btn btn-default">{{showme==true ? 'Cancel Quiz': 'Take a Quiz'}}</button>
    <div ng-show="showme" class="panel panel-primary col-sm-4" style="margin-left:250px;">
      <div class="panel-heading">Take Quiz</div>
      <div class="form-group col-sm-8 form-inline" style="margin-top: 30px;margin-bottom: 30px;">

        <button type="button" class="btn btn-default">Start Quiz</button>
      </div>
    </div>
  </body>

按钮切换和改变按钮标题和显示/隐藏div面板。看到Plunkr

对于angular模板中的文本(userType是$scope的属性,比如$scope.userType):

<span>
  {{userType=='admin' ? 'Edit' : 'Show'}}
</span>

如果有人还像我一样在遗留代码上工作,你也可以在ng风格中使用三元操作符来实现这一点,如下所示:

<li ng-style="{'color': connected ? '#008000' : '#808080'}"></li>

这个答案早于1.1.5版本,当时$parse函数中没有合适的三元。如果你在一个较低的版本,或者作为过滤器的例子,可以使用这个答案:

angular.module('myApp.filters', [])
  
  .filter('conditional', function() {
    return function(condition, ifTrue, ifFalse) {
      return condition ? ifTrue : ifFalse;
    };
  });

然后用它作为

<i ng-class="checked | conditional:'icon-check':'icon-check-empty'"></i>

在这里:三元运算符在1.1.5中被添加到角解析器!参见更新日志

这是一个小提琴显示在ng-class指令中使用的新三元运算符。

ng-class="boolForTernary ? 'blue' : 'red'"