angularjs - ngswitch с 4 условиями
Мне нужно написать угловой ng-switch
с 4 условиями.
Некоторые другие ответы здесь на SO предлагают использовать 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, выводящих все значения true.
можно ли сделать что-то вроде следующего?
<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 ответ
Немного грязным решением было бы использовать массив и метод 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/