2013-12-09 21 views
12

Chcę sprawdzić dane boolowskie za pomocą kątowego przełącznika ngPrzełącznik kątowy z boolowskim

To jest mój kod. ale to nie działa

<div ng-switch={{Item.ItemDetails.IsNew}}> 
    <div ng-switch-when="true"> 
     <p class="new fontsize9 fontWeightBold">NEW</p> 
    </div> 
</div> 
    <div ng-switch={{Item.ItemDetails.IsFeatured}}> 
     <div ng-switch-when="true"> 
       <div class="featured"> 
        <p class="fontWeightBold fontsize8">featured</p> 
       </div> 
     </div> 
    </div> 

wartości {{Item.ItemDetails.IsNew}} i {{}} Item.ItemDetails.IsFeatured są prawdziwe czy fałszywe

+0

ng -switch już oczekiwał wyrażenia, więc {{}} zawijanie go było tutaj błędem. – Hafthor

Odpowiedz

16

Jeśli tylko sprawdzanie prawdziwych wartości, ng-jeśli wydaje się bardziej odpowiednie i zmniejsza potrzebę stosowania dodatkowych div zawierających kod, zmniejszając swoją próbkę też:

<div ng-if="Item.ItemDetails.IsNew"> 
    <p class="new fontsize9 fontWeightBold">NEW</p> 
</div> 
<div class="featured" ng-if="Item.ItemDetails.IsFeatured"> 
    <p class="fontWeightBold fontsize8">featured</p> 
</div> 

pełne dokumenty na: http://docs.angularjs.org/api/ng.directive:ngIf

+0

Niestety OddEssay ... W mojej wersji ng-if nie jest obsługiwany .. – Isuru

+0

Jeśli nie możesz uaktualnić, ng-show będzie działał jak kropla w zamianie. - W przeciwnym razie musisz edytować 'ng-switch = {{Item.ItemDetails.IsNew}}' na 'ng-switch =" Item.ItemDetails.IsNew "' (Bez nawiasów klamrowych, wartość w cudzysłowie) - Jednak ja ' Nie wiem, czy to zadziała, ponieważ przełączanie ma na celu ocenę ciągów, więc wartość boolowska może być dziwaczna. – OddEssay

+3

Tak OddEasy.. bez nawiasów klamrowych ng-switch = działa Item.ItemDetails.IsNew ". Wielkie dzięki ... – Isuru

18

Konwersja boolea n na ciąg:

<div ng-switch="Item.ItemDetails.IsNew.toString()"> 
    <div ng-switch-when="true"> 
+1

Ta odpowiedź nie działa (ng-switch oczekuje wyrażenia, więc kierownica jest niepotrzebna), ale cel odpowiedzi jest w rzeczywistości poprawne i powinno być zaakceptowane: 'ng-switch-when' wymaga napisu. Jeśli masz wartość boolowską w teście 'ng-switch', rozwiązaniem jest' toString() ', aby przekonwertować ją na 'true' lub 'false'. – sumizome

+0

Ta odpowiedź zadziałała. –

+0

Ta odpowiedź również zadziałała. Musiałem użyć 'ng-switch', aby uniknąć problemu z migotaniem DOM, który miałem podczas używania dwóch przeciwnych instrukcji' ng-if'. 'ng-switch-when =" true "użyte w tandemie z' ng-switch-default' pomogło rozwiązać problem. –

0

Ta składnia działa dla mnie:

<div ng-switch="Item.ItemDetails.IsFeatured"> 
    <div ng-switch-when="true">FEATURED ITEM HTML</div> 
    <div ng-switch-default>REGULAR ITEM HTML (not featured)</div> 
    </div> 
1

Należy usunąć {{}} z ng-switch: zmienić tę <div ng-switch={{Item.ItemDetails.IsNew}}> do <div ng-switch=Item.ItemDetails.IsNew>