angularjs - 具有4个条件的ngswitch

时间:2016-05-19 11:42:44

标签: angularjs angular-ng-if ng-switch angularjs-ng-if angularjs-ng-switch

我需要用4个条件写一个角度ng-switch

此处的其他一些答案建议使用ng-if代替ng-switch

所以我尝试了ng-if,但我不认为这是最好的方法,我会解释原因:

基本上我需要显示3个不同的图标,这取决于我在我的范围内得到的一些变量。

我的模板中的代码如下:

<div class="buttons">
   <div ng-if="test.mMode==4 && test.kit==4 && test.react.on==true && test.act==1">
      <i class="icon ion-man"></i>
   </div>

   <div ng-if="test.mMode==4 && test.kit==4 && test.react.on==false && test.act==1">
      <i class="icon ion-man"></i>
   </div>

   <div ng-if="zone.iActivity==1">
      <i class="icon ion-man"></i>
   </div>
</div>

现在,对我来说,这看起来非常麻烦。 而且,它没有按预期工作,因为它通过所有if语句迭代打印所有真实。

是否有可能做以下事情呢?

<div class="buttons" ng-switch="test.act && test.Mode && test.kit && test.react.on">
   <div ng-switch-when="1 && 4 && 4 && true">
      <i class="icon ion-man"></i>
   </div>

   <div ng-switch-when="1 && 4 && 4 && false">
      <i class="icon ion-man"></i>
   </div>

   <div ng-switch-when="1"> //I need only the first condition to be true, I don't need the others.
      <i class="icon ion-man"></i>
   </div>
</div>

或者,您对如何正确处理此类模板有任何其他建议吗?

希望问题很清楚。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

有点脏的解决方案是使用array和toString()方法。

<ng-switch on="[Ex1.x, Ex1.y].toString()">
    <div ng-switch-when="0,true">
      0,true -- jaj
    </div>
    <div ng-switch-when="1,true">
      1,true -- jaj
    </div>
    <div ng-switch-when="2,false">
      2,false -- jaj
    </div>
    <div ng-switch-default>
     default... booo
    </div>
  </ng-switch>

小提琴:https://jsfiddle.net/r88dhr0w/