2014-10-10 74 views
0

我有一個說法,我需要根據情況的變量分配:角JS如果條件不工作

<b>{{ (varA.count > 1 ? {{'varB.status' | localizedString}} : '') }} </b> 

其中{{varB.status | localizedString}}過濾器「varB.Status」在另一個地方 指定localizedString例如如果varB.Status是「測試」的選擇定位,它將返回「測試」

這給我的

錯誤
Syntax Error: Token 'varB.status' is unexpected, expecting [:] 
+0

只要'{{(varA.count> 1?varB。狀態:'')}}' – PSL 2014-10-10 15:02:56

回答

2

你有語法錯誤,你不需要內插值和太不完整的表達之間的插值。假設varB也在範圍內,表達式將根據範圍本身評估爲屬性。

只要做到: -

<b>{{ (varA.count > 1 ? varB.status : '') }} </b> 

Demo

如果要應用過濾器: -

<b>{{ (varA.count > 1 ? (varB.status | localizedString) : '') }} </b> 

甚至

<b>{{ (varA.count > 1 ? varB.status : '') | localizedString }} </b> 
0

試試這個

<b>{{ (varA.count > 1 ? varB.status : '') }} </b> 
0

{{}}花括號允許您在HTML中注入Angular表達式。

<b>outside {{ my_expression }} outside</b> 
       ^^^^^^^^ 

在上面{{...}}裏面的文字會被轉換成一個Angular表達式。

<b>outside {{ my_expression }} outside</b> 
    ^^^^^      ^^^^^ 

在上述{{...}}以外的文字將保持不變。

您也可以使用ngBind指令將表達式的結果賦值給DOM元素的主體。

<b ng-bind="mY_expression"></b> 

https://docs.angularjs.org/api/ng/directive/ngBind

要顯示的varB.status值只寫varA.count > 1 ? varB.status : ''這樣。

<b>{{varA.count > 1 ? varB.status : ''}}</b> 

或者,上述可以縮短到這一點。

<b>{{varA.count > 1 && varB.status}}</b> 
     <!-- or --> 
<b ng-bind="varA.count > 1 && varB.status"></b> 

或者你可以使<b>可選。

<b ng-if="varA.count > 1">{{varB.status}}</b> 
+0

'{{varA.count> 1 && varB.status}}'如果條件不匹配,您不想輸出false – PSL 2014-10-10 15:14:18

+0

@PSL會寫入false還是空字符串? – cgTag 2014-10-10 15:14:53

+0

以這種方式使用操作會令人困惑,並且一般只在真實時纔會給出所需的輸出。 http://plnkr.co/edit/fRSPZi?p=preview – PSL 2014-10-10 15:15:27