Sichtbarkeit in AngularJs versteckt?

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

ng-show angewendet display: noneoder display: blockEigenschaft Aber ich möchte anwenden visibility: hiddenund visibility: visibleEigenschaft.

Chirag
quelle

Antworten:

75

Sie können ng-classoder ng-styleAnweisungen wie folgt verwenden

ng-class

Dadurch wird myclassder Schaltfläche eine Klasse hinzugefügt , wenn nur disableTagButtonwahr ist. Wenn sie disableTagButtonfalsch ist, myclasswird sie von der Schaltfläche entfernt

Ausdrucksübergabe an ng-classkann eine Zeichenfolge sein, die durch Leerzeichen getrennte Klassennamen, ein Array oder eine Zuordnung von Klassennamen zu booleschen Werten darstellt.

1 - durch Leerzeichen getrennte Klassennamen

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

2 - ein Array

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

style1, style2 & style3 sind CSS-Klassen. Weitere Informationen finden Sie in der folgenden Demo.

2 - Ausdruck

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

Wenn somePropertyvorhanden, fügen Sie .my-classes hinzu. Entfernen Sie es.

Wenn der CSS-Klassenname im ng-classBindestrich getrennt ist, müssen Sie ihn als Zeichenfolge definieren, wie .. ng-class="'my-class' : ..Sie ihn sonst als Zeichenfolge definieren können oder nicht als.. ng-class="myClass : ..

ng-Klasse DEMO

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

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

ng-style

Der Ausdruck übergibt die Bewertungen im [ng-Stil ][2]an ein Objekt, dessen Schlüssel CSS - Stilnamen sind, und Werte sind entsprechende Werte für diese CSS-Schlüssel.

EX:

.. ng-style="{_key_ : _value_}" ...=> _key_ist die CSS-Eigenschaft, während _value_der Eigenschaftswert festgelegt wird. Ex =>.. ng-style="{color : 'red'}" ...

Wenn Sie so etwas verwenden, background-colorist es kein gültiger Schlüssel eines Objekts, dann muss es .. ng-style="{'background-color' : 'red'}" ...genauso wie die ng-Klasse in Anführungszeichen gesetzt werden .

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

dann disableTagButtonsolltest du so sein

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

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

So können Sie die Sichtbarkeit der Schaltfläche ändern, indem Sie die $scope.disableTagButton.

oder Sie können es als Inline-Ausdruck verwenden als,

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

wird someVarals wahr ausgewertet, dann wird die Sichtbarkeit auf visibleAndernfalls gesetzt hidden.

Kalhan. Toress
quelle
wie ich "Sichtbarkeit: sichtbar" geändert habe. Dafür muss ich eine neue Klasse erstellen?
Chirag
Setzen Sie einfach die Variable auf false, auf diese Weise wird die Klasse entfernt
Michael
gesetzt , disableTagButtonum falsedann automatisch Klasse myClasswird aus der Schaltfläche entfernen Sie dann visibility: hiddenentfernen wird
Kalhan.Toress
Wie setze ich display: block ohne true false Bedingung? wie ng-style = "{" someDivId ", 'display': 'block'}". Ich möchte dies im HTML tun, nicht im js.
Meile
50

Sie können verwenden ng-style. Einfaches Beispiel:

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

Zur Laufzeit ändert sich der Stil, wenn er sich isMenuOpenändert.

  • Wann isMenuOpenist wahr , wirst du haben style="visibility: visible".
  • Wenn isMenuOpenist falsch , müssen Sie style="visibility: hidden".
AlikElzin-Kilaka
quelle
Wie setze ich display: block ohne true false Bedingung? wie ng-style = "{" someDivId ", 'display': 'block'}". Ich möchte dies im HTML tun, nicht im js.
Meile
1
@ Meile Es ist in der HTML. Beispiel:<div ng-style="{'visibility': isMenuOpen?'visible':'hidden'}">...</div>
AlikElzin-kilaka
Sie können schreiben: ng-style="{visibility: isMenuOpen?'visible':'hidden'}" Zitate sind nur bei zusammengesetzten Wörtern nützlich. Andernfalls können Sie die CAML-Syntax für die ohne Anführungszeichen erstellten CSS-Eigenschaften verwenden.
Bösartigkeit
15

Hier ist eine einfache Anweisung, die die Sichtbarkeit auf versteckt oder sichtbar setzt (aber nicht reduziert):

.directive('visible', function() {

    return {
        restrict: 'A',

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

Verwendung:

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

Gruff Bunny
quelle
Ich mag den Richtlinienansatz, in diesem Fall könnte es übertrieben sein. Aber ich mag es immer noch :)
Raz0rwire
2
Das Angular-Team sollte nur eine ng-visibleAnweisung hinzufügen .
Iheartcsharp
12

Oder wenn Sie Bootstrap verwenden, verwenden Sie die invisibleKlasse

ng-class='{"invisible": !controller.isSending}'
Duane Fields
quelle
Die einfachste und eleganteste Lösung für Benutzer von Bootstrap.
Souhaieb Besbes
2

Sie sollten in Ihrem Fall ngClass oder ngStyle verwenden :

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

Und dieses CSS :

.button-hidden{
   visibility: hidden;
}
Michael
quelle
1

Warum verwenden Sie ng-nicht, wenn Ihr Tag nicht auf Ihrer HTML-Seite gerendert wird? Ich denke du benutzt das:

<button id="tagBtnId" name="TagsFilter" ng-if="disableTagButton">Tags</button>
Sandeep
quelle
3
Dies ähnelt der Anzeige, keine, aber der erforderliche Stil ist Sichtbarkeit: versteckt. Welches ist nicht das gleiche.
Yury Kozlov
Ich wollte diese ng-if-Funktionalität, da ich die Sichtbarkeit auf versteckt setzen wollte und das Element nicht im HTML erscheinen sollte. perfekte Lösung.
Kiran Chaudhari
1

Siehe https://docs.angularjs.org/api/ng/directive/ng. Zeigen Sie den Abschnitt über das Überschreiben von .ng-hide an

Sie müssen lediglich die Klasse hg-hide-animatedem Element zuweisen

/* 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;
}

user2173403
quelle