2013-12-09 52 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>