"ng-show"和"ng-hide"有什么区别?



这些属性都被赋予truefalse值,那么它们之间有什么区别呢?如果没有它们的价值观,那将是有意义的。

我错过了什么吗?

如果表达式为,则显示元素ng-show,如果为,它将隐藏

另一方面,对于ng-hide,如果表达式为,则元素被隐藏,如果为,则会显示该元素。

只是同一枚硬币的两面。

在我之前从事的一个项目中,我发现同时选择ng-showng-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-showng-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>

最新更新