Улучшить документацию Посмотреть исходный код ngShow
- директива в модуле ng
Директива ngShow отображает или скрывает заданный HTML-элемент, в зависимости от выражения, предоставленного атрибуту ngShow.
Элемент отображается или скрывается путем удаления или добавления класса .ng-hide CSS к элементу. Класс .ng-hide CSS предопределен в AngularJS и устанавливает стиль отображения в none (используя флаг !important). Для режима CSP добавьте angular-csp.css в ваш HTML-файл (см. ngCsp).
<!-- when $scope.myValue is truthy (element is visible) --> <div ng-show="myValue"></div> <!-- when $scope.myValue is falsy (element is hidden) --> <div ng-show="myValue" class="ng-hide"></div>
Когда выражение ngShow принимает ложное значение, класс .ng-hide CSS добавляется к атрибуту класса элемента, делая его скрытым. Когда значение истинно, класс .ng-hide CSS удаляется из элемента, и элемент не будет скрытым.
Почему используется !important?
Вы можете задаться вопросом, почему используется !important для класса .ng-hide CSS. Это потому, что селектор .ng-hide легко переопределяется более сильными селекторами. Например, такое простое действие, как изменение стиля отображения элемента списка HTML, сделает скрытые элементы видимыми. Эта проблема усугубляется при работе с CSS-фреймворками.
Использование !important обеспечит ожидаемое поведение отображения и скрытия, несмотря на любые конфликты селекторов CSS (когда !important не используется с конфликтующими стилями). Если разработчик захочет переопределить стили для изменения способа скрытия элемента, ему достаточно использовать !important в собственном CSS-коде.
Переопределение .ng-hide
По умолчанию класс .ng-hide стилизует элемент со стилем display: none !important. Если вы хотите изменить поведение скрытия с ngShow/ngHide, вы можете просто переопределить стили для класса .ng-hide CSS. Обратите внимание, что для учёта дополнительных анимационных классов, которые могут быть добавлены, необходимо использовать селектор .ng-hide:not(.ng-hide-animate).
.ng-hide:not(.ng-hide-animate) {
/* These are just alternative ways of hiding an element */
display: block!important;
position: absolute;
top: -9999px;
left: -9999px;
}
По умолчанию вам не нужно переопределять ничего в CSS, и анимации будут работать вокруг стиля отображения.
Примечание об анимациях с ngShow
Анимации в ngShow/ngHide работают с событиями отображения и скрытия, которые срабатывают, когда выражение директивы принимает значения true и false. Эта система работает так же, как система анимации в ngClass, за исключением того, что вам также необходимо включить флаг !important для переопределения свойства display, чтобы элементы не были фактически скрыты во время анимации.
/* A working example can be found at the bottom of this page. */
.my-element.ng-hide-add, .my-element.ng-hide-remove {
transition: all 0.5s linear;
}
.my-element.ng-hide-add { ... }
.my-element.ng-hide-add.ng-hide-add-active { ... }
.my-element.ng-hide-remove { ... }
.my-element.ng-hide-remove.ng-hide-remove-active { ... }
Обратите внимание, что начиная с версии AngularJS 1.3, нет необходимости изменять свойство display на block во время анимации — ngAnimate автоматически позаботится о переключении стилей.
Информация о директиве
- Эта директива выполняется на уровне приоритета 0.
- Эта директива может использоваться как многоэлементная
Использование
- в качестве элемента: (Эта директива может использоваться в качестве пользовательского элемента, но имейте в виду ограничения IE).
<ng-show ng-show="expression"> ... </ng-show>
- в качестве атрибута:
<ANY ng-show="expression"> ... </ANY>
Анимации
| Анимация | Происходит |
|---|---|
addClass .ng-hide
| После того, как выражение ngShow примет ложное значение, и непосредственно перед тем, как содержимое будет скрыто. |
removeClass .ng-hide
| После того, как выражение ngShow примет истинное значение, и непосредственно перед тем, как содержимое будет отображено. |
Аргументы
| Параметр | Тип | Подробности |
|---|---|---|
| ngShow | expression | Если выражение является истинным/ложным, то элемент отображается/скрывается соответственно. |
Простой пример, анимирующий непрозрачность элемента:
Более сложный пример, включающий различные анимации отображения/скрытия:
© 2010–2017 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://code.angularjs.org/1.5.11/docs/api/ng/directive/ngShow