这些属性都被赋予true
或false
值,那么它们之间有什么区别呢?如果没有它们的价值观,那将是有意义的。
我错过了什么吗?
如果表达式为真,则显示元素ng-show
,如果为假,它将隐藏
另一方面,对于ng-hide
,如果表达式为真,则元素被隐藏,如果为假,则会显示该元素。
只是同一枚硬币的两面。
在我之前从事的一个项目中,我发现同时选择ng-show
和ng-hide
很有用。原因是因为我的导航栏中有一个链接,该链接只应该显示用户是否在特定视图上。这是这种情况:
<li ng-hide="isActive('/about') || isActive('/contact')" ng-class="{ 'vert-nav-active': isActive('/investigator')}" class="top-buffer">
<a href="#/investigator" class="buff-sides navListLinks">Investigator Portal</a>
</li>
现在,您可能会说,好吧,您可以让isActive('/about') || isActive('/contact')
返回相反的布尔值并将ng-hide
更改为ng-show
,每件事都将保持不变,但正如您所看到的,我也使用此功能来确定我在哪个链接上。如果我颠倒这个逻辑,看起来就像我在除了我所在的实际链接之外的每个链接上。当然,我可以为ng-show
编写另一个函数,但我喜欢重用已经存在的代码。
还值得一提的是ng-if
它像ng-show
和ng-hide
一样采用布尔表达式,但不仅仅是根据表达式显示/隐藏元素,如果表达式false
,它从 DOM 中完全删除了元素,如果表达式变得true
,则将元素放回 DOM
我有一个很好的场景,假设你想根据验证显示一个或另一个属性,但不能同时显示两个属性,所以像这样同时使用 ng-show 和 ng-hide:
<div ng-show="validation"></div>
<div ng-hide="validation"></div>
如果验证为真,它将显示第一个div,但如果它是假的,它将显示第二个div... 这可以通过更多方式完成,但对于棘手的问题来说,这是一个切肉刀的解决方案:D
ng-show 只会在表达式为真时显示元素......
<span ng-show="true">Will Show </span>
<span ng-show="false">Will not Show </span>
如果表达式为真,ng-hide 将不会显示元素,但如果表达式为假,则会显示该元素。
<span ng-hide="true">Will not display</span>
<span ng-hide="false">Will display</span>