2013-12-09 56 views
12

我想檢查角度ng開關布爾數據帶布爾值的角度ng開關

這是我的代碼。但它不工作{{Item.ItemDetails.IsNew}}的

<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> 

值和{{Item.ItemDetails.IsFeatured}}是真的還是假的

+0

納克-switch已經在等待一個表達式,所以{{}}包裝它是這裏的錯誤。 – Hafthor

回答

16

如果你只是檢查真實值, NG-IF似乎更合適,並減少了包含代碼的附加的div的需求,降低了您的樣本太:在

<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> 

全部文檔:http://docs.angularjs.org/api/ng.directive:ngIf

+0

對不起OddEssay ...在我的版本ng-if不支持.. – Isuru

+0

如果你不能升級,ng-show可以作爲替代品。 - 否則,你需要編輯'ng-switch = {{Item.ItemDetails.IsNew}}'到'ng-switch =「Item.ItemDetails.IsNew」'(沒有大括號,引號中的值)不確定它會工作,因爲開關往往旨在評估字符串,所以布爾值可能會變得古怪。 – OddEssay

+3

是的OddEasy..without花括號ng-switch =「Item.ItemDetails.IsNew」工作。 – Isuru

18

轉換的boolea N到字符串:

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

這個答案不起作用(ng-switch期望一個表達式,所以句柄是不必要的),但答案的意圖實際上是正確,應該是可以接受的:'ng-switch-when'需要一個字符串。如果你在'ng-switch'測試中有一個布爾值,那麼使用'toString()'將它轉換爲'true'或'false'是解決方案。 – sumizome

+0

這個答案適合我。 –

+0

這個答案也適用於我。我需要使用'ng-switch'來避免使用兩個相反的'ng-if'語句時出現的DOM閃爍問題。 'ng-switch-when =「true」'與'ng-switch-default'配合使用有助於解決問題。 –

0

這句法工作對我來說:

<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

您應該刪除{{}}從NG-開關: 更改此<div ng-switch={{Item.ItemDetails.IsNew}}><div ng-switch=Item.ItemDetails.IsNew>