видимість, прихована в AngularJs?


80
<button id="tagBtnId" name="TagsFilter" ng-show="disableTagButton">Tags</button>

ng-show застосовується display: noneабо display: blockвластивість Але я хочу подати заявку visibility: hiddenі visibility: visibleвластивість.

Відповіді:


75

Ви можете використовувати ng-classабо ng-styleдирективи, як показано нижче

ng-class

це додасть клас myclassдо кнопки, коли тільки disableTagButtontrue, якщо disableTagButtonfalse, тоді myclassбуде видалено з кнопки

виразом переходу ng-classможе бути рядок, що представляє імена класів, розділені пробілами, масив або карта назв класів у логічні значення.

1 - назви класів, розділені пробілами

.. ng-class="{strike: deleted, bold: important, red: error}".. 

2 - масив

.. ng-class="[style1, style2, style3]".. 

style1, style2 & style3 - це класи css. Для отримання додаткової інформації перегляньте демонстрацію нижче.

2 - вираз

.. ng-class="'my-class' : someProperty ? true: false".. 

якщо somePropertyіснує, то додайте .my-classще, видаліть його.

Якщо ім'я класу css у розділі ng-classтире розділено, тоді вам потрібно визначити його як рядок, як .. ng-class="'my-class' : ..інакше, ви можете визначити його як рядок чи ні як.. ng-class="myClass : ..

DEMO класу ng

<button id="tagBtnId" name="TagsFilter" ng-class="{'myClass': disableTagButton}">Tags</button>

<style>
   .myClass {
       visibility: hidden
    }
</style>

ng-style

Вираз передає стилі [ng стилю ][2]об’єкту, ключі якого мають імена стилів CSS, а значення - відповідні значення цих ключів CSS.

ЕКС:

.. ng-style="{_key_ : _value_}" ...=> _key_є властивістю css при _value_встановленні значення властивості. Приклад =>.. ng-style="{color : 'red'}" ...

Якщо ви використовуєте щось на зразок, background-colorтоді його неприпустимий ключ об'єкта, тоді його потрібно вказувати так .. ng-style="{'background-color' : 'red'}" ...само, як і ng-class.

<button id="tagBtnId" name="TagsFilter" ng-style="disableTagButton">Tags</button>

тоді ваш disableTagButtonповинен бути таким

$scope.disableTagButton = {'visibility': 'hidden'}; // then button will hidden.

$scope.disableTagButton = {'visibility': 'visible'}; // then button will visible.

так що u може змінити видимість кнопки, змінивши $scope.disableTagButton.

або ви можете використовувати його як вбудований вираз, як,

ng-style="{'visibility': someVar ? 'visible' : 'hidden'}"

має someVarзначення true, тоді як для видимості встановлено значення visibleElse для видимості встановлено значення hidden.


як я змінив "видимість: видиме". Для цього мені потрібно створити новий клас?
chirag

Просто встановіть для змінної значення false, таким чином клас буде видалено
Майкл

встановлено disableTagButtonзначення, falseа потім клас автоматично myClassвидалить з кнопки, потім visibility: hiddenвидалить
Калхан. Терес

Як встановити display: block без істинної помилкової умови? наприклад ng-style = "{" someDivId ", 'display': 'block'}". Я хочу зробити це в html, а не в js.
Milee

50

Можна використовувати ng-style. Простий приклад:

<div ng-style="{'visibility': isMenuOpen?'visible':'hidden'}">...</div>

Під час виконання стиль змінюється при isMenuOpenзміні.

  • Коли isMenuOpenце правда , ви будете мати style="visibility: visible".
  • Коли isMenuOpenце брехня , ви будете мати style="visibility: hidden".

Як встановити display: block без істинної помилкової умови? наприклад ng-style = "{" someDivId ", 'display': 'block'}". Я хочу зробити це в html, а не в js.
Milee

1
@Milee Це в html. Приклад:<div ng-style="{'visibility': isMenuOpen?'visible':'hidden'}">...</div>
AlikElzin-kilaka

Ви можете написати: ng-style="{visibility: isMenuOpen?'visible':'hidden'}" Цитати корисні лише зі складними словами. В іншому випадку ви можете використовувати синтаксис CAML для властивостей css, складених без лапок.
maliness

15

Ось проста директива, яка встановлює видимість на приховану або видиму (але не згортання):

.directive('visible', function() {

    return {
        restrict: 'A',

        link: function(scope, element, attributes) {
            scope.$watch(attributes.visible, function(value){
            element.css('visibility', value ? 'visible' : 'hidden');
        });
    }
  };
})

Використання:

<button visible='showButton'>Button that can be invisible</button>


Мені подобається директивний підхід, у цьому випадку він може бути надмірним. Але мені все одно подобається :)
Raz0rwire

2
Команда Angular повинна просто додати ng-visibleдирективу.
iheartcsharp

12

Або якщо ви використовуєте bootstrap, використовуйте invisibleклас

ng-class='{"invisible": !controller.isSending}'

найпростіше та найелегантніше рішення для людей, які використовують bootstrap, тобто.
Souhaieb Besbes

2

Ви повинні використовувати ngClass або ngStyle , у вашому випадку:

<button id="tagBtnId" name="TagsFilter" 
    ng-class="{'button-hidden':!disableTagButton}">Tags</button>

І цей CSS :

.button-hidden{
   visibility: hidden;
}

1

чому ви не використовуєте ng-якщо ваш тег не відображається на вашій HTML-сторінці. Я думаю, ви використовуєте це:

<button id="tagBtnId" name="TagsFilter" ng-if="disableTagButton">Tags</button>

3
Це схоже на показ; жодного, але необхідним стилем є видимість: прихований. Що не однаково.
Юрій Козлов

Я хотів цю функцію ng-if, оскільки хотів встановити видимість як приховану, і елемент не повинен відображатися в html. ідеальне рішення.
Кіран Чаудхарі,

1

див. https://docs.angularjs.org/api/ng/directive/ngПоказати розділ про Заміна .ng-hide

Все, що вам потрібно, це призначити клас hg-hide-animateелементу

/* style your element(s) at least for selector.ng-hide */
/* in this case your selector is #tagBtnId */
#tagBtnId.ng-hide {
  /*visibility:hidden;*/
  opacity: 0;
  transition: opacity 1s ease-in;
}
#tagBtnId {
  /*visibility:initial;*/
  opacity: 1;
  transition: opacity 1s ease-out;
}

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.