Я знаю о разнице между ng-show и ng-hide, но в интервью мне задали вопрос: зачем нам нужен ng-hide, если у нас есть ng-show, потому что мы знаем, что оба показывают или скрывают данный элемент HTML на основе на их значениях, которые могут быть истинными или ложными. По какой причине мы должны отдавать предпочтение ng-show вместо ng-hide или наоборот?
Использование ng-show и ng-hide в AngularJS
comment
Я бы сказал, что это просто разные предпочтения - иногда вы хотите скрыть элемент только в определенном сценарии, в других случаях вы хотите показать его только в определенных обстоятельствах.
- person Yatin   schedule 28.07.2017
Ответы (3)
Читаемость.
ng-show="feature.enabled"
более читаем, чем ng-hide="!feature.enabled"
. Двойное отрицание труднее понять.
person
JB Nizet
schedule
27.07.2017
Следует отметить, что ng-show и ng-hide не удаляют и не создают элементы DOM, а просто переключают их отображение или нет с помощью css.
Таким образом, легко переключать один элемент, оставляя другой скрытым в DOM, и, конечно, они обеспечивают удобочитаемость, как было сказано ранее.
<p ng-show="guess === number">Correct</p>
<p ng-hide="guess === number">Incorrect</p>
person
w-robot
schedule
27.07.2017
ng-hide
имеет приоритет над ng-show
. Поэтому, если вы хотите, вы можете объединить их и предоставить им два разных условия, если вы хотите переопределить ng-show
с ng-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>
person
H Tom
schedule
27.07.2017
Не могли бы вы предоставить пример фрагмента, объясняющего этот вариант использования?
- person mattjegan; 28.07.2017
Добавил пример.
- person H Tom; 28.07.2017