2016-03-24 88 views
1

篩選我有以下代碼:AngularJS與三元運算表達式

<td data-ng-repeat="fld in checkedFields" ng-init="field = result[fld.field]; filter = fld.filter"> 
<span> 
    {{ null != filter ? field | filter : field }} 
</span> 
</td> 

我收到以下控制檯錯誤

Error: [$parse:syntax] Syntax Error: Token '|' is unexpected, expecting [:] at column 24 of the expression [null != filter ? field | filter : field] starting at [| filter : field]. 

任何是否知道如何使用三元運算表達式AngularJS過濾器?

注:fld.filter將是一個AngularJS過濾

+0

能否請您添加的jsfiddle的一樣,想知道你有什麼樣的數據。語法看起來不正確,因爲三元運算符期望比較?真假 ;然後你可以應用過濾器。 – Rahul

回答

0

這對你的|聲明barfing,這是行不通的,因爲|是角一個特殊字符(這意味着應用filter) 這是三元運算符,如果你正在嘗試做一個普通的三元運算符,將工作

{{null != filter ? filter : field}}

編輯

如果要應用過濾器,你將需要在ng-repeat

<td data-ng-repeat="fld in checkedFields | filterExpression" ng-init="field = result[fld.field]; filter = fld.filter"> 
<span> 
    {{fld.someProperty}} 
</span> 
</td> 

做到這一點,你不能在你的顯示文本適用於您的過濾器,並期望過濾器應用到列表中。如果您試圖過濾您的列表,您將需要修改您的代碼,以在ng-repeat中應用過濾器。我已經包含了關於過濾如何工作的鏈接,我建議您查看它以掌握正在進行的過程。

4

周圍使用過濾器表達式圓括號:

{{ null != filter ? (field | filter) : field }} 
+1

不給出任何錯誤,但過濾器不起作用 –

+0

什麼是「過濾器」?它是一個自定義過濾器嗎?你想要它做什麼? –

+0

fld.filter將是一個AngularJS過濾器 –

1

在Angularjs |用於應用filters.Try這個

{{ null != filter ? (field | filter) : field }} 
+1

不給出任何錯誤,但過濾器不起作用 –

+0

@ Dead-Man爲什麼使用null來比較?並在ng-init什麼值是過濾器= fld.filter –

+0

有時可以爲空 –

0
{{ null != filter ? (field || filter) : field }} 
+1

不會給出任何錯誤,但過濾器不起作用 –