Spec-Zone.ru › Angular.js 1.4

Улучшить эту документацию Посмотреть исходный код ngShow

  1. директива в модуле ng

Директива ngShow отображает или скрывает заданный HTML-элемент, основываясь на выражении, переданном в атрибут ngShow. Элемент отображается или скрывается путём удаления или добавления CSS-класса .ng-hide к элементу. Класс .ng-hide предопределён в 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, делая его скрытым. Когда выражение истинно, класс .ng-hide удаляется из элемента, что делает элемент видимым.

Почему используется !important?

Вы, возможно, задаётесь вопросом, почему для CSS-класса .ng-hide используется !important. Это связано с тем, что селектор .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) {
  /* this is just another form 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 {
  /* this is required as of 1.3x to properly
     apply all styling in a show/hide animation */
  transition: 0s linear all;
}

.my-element.ng-hide-add-active,
.my-element.ng-hide-remove-active {
  /* the transition is defined in the active class */
  transition: 1s linear all;
}

.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.0-beta.11, нет необходимости изменять свойство display на block во время анимации — ngAnimate автоматически выполнит изменение стилей.

Информация о директиве

  • Эта директива выполняется на уровне приоритета 0.
  • Эта директива может использоваться как многоэлементная

Использование

  • в качестве атрибута:
    <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.4.14/docs/api/ng/directive/ngShow

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API