在使用过滤器的表达式中应用三元运算符

AME*_*AME 8 angularjs

这工作:

{{ boolean ? String1 : String2 }}
Run Code Online (Sandbox Code Playgroud)

这不是:

{{ boolean ? String1 | weirdoFilter : String2 | weirdoFilter }}
Run Code Online (Sandbox Code Playgroud)

如何将过滤器应用于三元表达式?

编辑:也许是单引号?

Pie*_*ler 18

你可以用括号做:

{{ (boolean ? String1 : String2) | weirdoFilter }}
Run Code Online (Sandbox Code Playgroud)


Bil*_*oon 5

...如果你在视图中创建了一个函数,那么使用真实生活javascript(而不是更有限的角度表达式)在控制器中执行逻辑会变得更容易......

{{ mySpecificThing(String1,String2) }}
Run Code Online (Sandbox Code Playgroud)

......然后在控制器......

$scope.mySpecificThing = function(item1, item2){
    return boolean ? $filter('weirdoFilter')(item1) : $filter('weirdoFilter')(item2);
}
Run Code Online (Sandbox Code Playgroud)

作为一般模式,我认为始终保持逻辑远离模板是有利的.