为什么从ng-show =“!emptyArray”和ng-hide =“ emptyArray”得到不同的结果?
我一直都在思考ngShow
和ngHide
互相扮演布尔对象。但是,这种想法ngShow
被涉及空数组时的意外行为所动摇。
这是一个演示小品。为什么ng-
show="!emptyArray"
表现不佳ng-hide="emptyArray"
?
-
因为
[] !== 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
自己。希望能帮助到你。
-
ng-if和ng-show / ng-hide有什么区别
2021-02-01 关注 0 浏览92 1答案
-
什么时候支持ng-if和ng-show / ng-hide?
2021-02-01 关注 0 浏览108 1答案
-
何时支持 ng-if 与 ng-show/ng-hide?
2022-03-22 关注 0 浏览39 1答案
-
ng-show =“ true”,但仍具有class =“ ng-hide”
2021-02-01 关注 0 浏览82 1答案
-
AngularJS:ng-show / ng-hide 不适用于`{{ }}`插值
2022-07-28 关注 0 浏览8 1答案
-
AngularJS:ng-show / ng-hide不适用于`{{}}`插值
2021-02-01 关注 0 浏览95 1答案
-
如何使用角度ui路由器进行ng-hide和ng-show视图?
2021-02-01 关注 0 浏览86 1答案
-
在ng-hide / ng-show中是否可能使用复杂的表达式?
2021-02-01 关注 0 浏览81 1答案
-
angular中ng一if和ng-show/hide 有什么区别?
2020-01-14 关注 0 浏览456 1答案
-
替代ng-show / hide或如何仅加载DOM的相关部分
2021-02-01 关注 0 浏览95 1答案