AngularJS 中的 ng-show 和 ng-hide 用法

ng-show and ng-hide usage in AngularJS

提问人:Ritesh Puri 提问时间:7/28/2017 最后编辑:NehalRitesh Puri 更新时间:7/28/2017 访问量:1349

问:

我知道 ng-show 和 ng-hide 之间的区别,但是在一次采访中有人问我一个问题,如果我们有 ng-show,为什么我们需要 ng-hide,因为我们知道两者都根据它们的值显示或隐藏给定的 HTML 元素,这些值可以是真或假。我们应该偏爱 ng-show 而不是 ng-hide 的原因是什么,反之亦然?

angularjs 使用指令

评论

0赞 Yatin 7/28/2017
我想说这只是不同的偏好 - 有时您只想在特定场景中隐藏元素,有时您只想在特定情况下显示它。

答:

4赞 JB Nizet 7/28/2017 #1

可读性。

ng-show="feature.enabled"比 更具可读性。双重否定更难理解。ng-hide="!feature.enabled"

2赞 w-robot 7/28/2017 #2

需要注意的一件事是 ng-show 和 ng-hide 不会删除或创建 DOM 元素,而只是使用 css 切换它们是否显示

因此,切换一个元素很容易,而将另一个元素隐藏在 DOM 中 当然,如前所述,它们提供了可读性。

<p ng-show="guess === number">Correct</p>
<p ng-hide="guess === number">Incorrect</p>
2赞 hayzey 7/28/2017 #3

ng-hide优先于 。因此,如果您愿意,您可以将两者结合起来,并为它们提供两个不同的条件,如果您出于任何原因想要覆盖。不过,我个人建议不要这样做,因为您可以为一个指令提供多个条件来实现您需要的。ng-showng-showng-hide

例:

<h1>Good dogs</h1>
<div ng-repeat="dog in $ctrl.getDogs()" ng-show="dog.isGoodBoy()" ng-hide="dog.isBadBoy()">
    <p>{{dog.name}} is a good boy.</p>
</div>

评论

1赞 mattjegan 7/28/2017
您能否提供一个示例片段来解释此用例?
1赞 hayzey 7/28/2017
添加了一个示例。