有人可以解释为什么会有效:
<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
答案 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"