ng-show expression:使用||比较多个字符串

时间:2016-02-05 21:00:05

标签: angularjs

有人可以解释为什么会有效:

<div ng-repeat="fruit in fruits">
    <span ng-hide="fruit.type == 'apple' || fruit.type == 'banana'">
        {{fruit.type}} 
    </span>
</div>

渲染:

pear lemon 

但这不是:

<div ng-repeat="fruit in fruits">
    <span ng-hide="fruit.type == 'apple' || 'banana'">
        {{fruit.type}} 
    </span>
</div>

渲染:

// nothing

2 个答案:

答案 0 :(得分:5)

在Javascript(以及我所知道的大多数语言)中,比较是不可传播的。对于每个比较(在这种情况下是相等),您不幸需要一个完整的陈述。

fruit.type == 'apple' || 'banana'
1.评估fruit.type == 'apple' 2. 之后,它||将其结果与'banana'进行比较,其中Javascript是 truthy 值(''是唯一的&#34; falsy&#34;字符串,所有其他字符串都是&#34; truthy&#34;)。

从本质上讲,您最终会使用fruit.type == 'apple' || TRUE,这将始终触发ng-hide

答案 1 :(得分:0)

在这种情况下,它是一个坏的表达fruit.type ==&#39; apple&#39; || &#39;香蕉&#39;     ||在javascript中用于&#34; OR&#34;并在某些引用值未定义时为变量定义默认值,或者为null,例如:

var name = null || "mottaman85";

consolog.log(name);
"mottaman85"

function test(nombreV){
 var name = nombreV || "mottaman85"; 
console.log(name)
}

test();
"mottaman85"