具有三元运算符表达式的AngularJS过滤器

时间:2016-03-24 12:56:44

标签: javascript angularjs if-statement

我有以下代码:

<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过滤器

4 个答案:

答案 0 :(得分:4)

在过滤器表达式周围使用圆括号:

func my_makeIncrementer(externNumber:Int) -> (Int -> Int) {
    return {
        (number:Int)-> Int in

        return externNumber + number
    }
}

答案 1 :(得分:1)

在Angularjs中, | 用于应用过滤器。请尝试此

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

答案 2 :(得分:0)

在你的|声明中进行bar,这是行不通的,因为|是角度的特殊字符(表示应用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处应用过滤器。我已经包含了关于过滤如何工作的链接,我建议查看它以了解正在发生的事情。

答案 3 :(得分:0)

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