如果条件不起作用,则为角度js

时间:2014-10-10 15:02:07

标签: javascript html angularjs angularjs-filter

我有一个声明,我需要根据条件分配一个变量:

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

其中 {{varB.status | localizedString}} 过滤器&#39; varB.Status&#39;在另一个地方指定的localizedString 如果例如varB.Status是&#34;测试&#34;对于选择的本地化,它将返回&#34;测试&#34;

这给了我

的错误
Syntax Error: Token 'varB.status' is unexpected, expecting [:]

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

试试这个

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

答案 2 :(得分: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>