因为
[] !== false。您可以将长度值强制
boolean改为
!!。
<div ng-hide="!!emptyArray.length">emptyArray is falsy, so do not hide this.</div><div ng-show="!!!emptyArray.length">!emptyArray is truthy, so show this.</div>
编辑:
AngularJS的指令
hide或
show取决于
toBoolean()用于评估传入值的函数。这是toBoolean()的源代码:
function toBoolean(value) { if (value && value.length !== 0) { var v = lowercase("" + value); value = !(v == 'f' || v == '0' || v == 'false' || v == 'no' || v == 'n' || v == '[]'); } else { value = false; } return value;}您可以在JS控制台中验证以下代码:
>var emptyArray = [];>toBoolean(emptyArray)false>toBoolean(!emptyArray)false
这就解释了为什么。由于何时直接
emptyArray传递到
toBoolean(),因此它会评估正确的结果
false。然而,当
!emptyArray被传递到
toBoolean(),它不评估到
true,因为
!emptyArray是
false自己。
希望能帮助到你。



