537 Stimmen

AngularJS ngClass bedingungsgemäß

Gibt es einen Weg, einen Ausdruck für so etwas wie ng-class zu machen, der bedingt ist?

Zum Beispiel habe ich Folgendes versucht:

test

Das Problem bei diesem Code ist, dass unabhängig von dem Wert von obj.value1 die Klasse test immer auf das Element angewendet wird. Wenn man Folgendes tut:

test

Wird die Klasse nur angewendet, wenn obj.value2 nicht einem wahren Wert entspricht. Ich kann das Problem im ersten Beispiel umgehen, indem ich Folgendes mache:

test

Wo die Funktion checkValue1 wie folgt aussieht:

$scope.checkValue1 = function() {
  return $scope.obj.value === 'somevalue';
}

Ich frage mich nur, ob das so ist, wie ng-class funktionieren soll. Ich baue auch eine benutzerdefinierte Direktive, bei der ich etwas Ähnliches machen möchte. Ich kann jedoch keinen Weg finden, einen Ausdruck zu überwachen (und vielleicht ist das unmöglich und der Grund, warum es so funktioniert).

Hier ist ein plnkr, um zu zeigen, was ich meine.

38voto

Subhransu Punkte 29

Ich werde Ihnen zwei Methoden zeigen, wie Sie ng-class dynamisch anwenden können

Schritt-1

Verwendung des ternären Operators

Ausgabe

Wenn Ihre Bedingung wahr ist, wird class1 auf Ihr Element angewendet, sonst wird class2 angewendet.

Nachteil

Wenn Sie versuchen, den bedingten Wert zur Laufzeit zu ändern, wird die Klasse irgendwie nicht geändert. Daher empfehle ich Ihnen, Schritt 2 zu befolgen, wenn Sie Anforderungen wie die dynamische Klassenänderung haben.

Schritt-2

Ausgabe

Wenn Ihre Bedingung mit value1 übereinstimmt, wird class1 auf Ihr Element angewendet, wenn sie mit value2 übereinstimmt, wird class2 angewendet usw. Und die dynamische Klassenänderung funktioniert damit einwandfrei.

Ich hoffe, das wird Ihnen helfen.

37voto

aamir sajjad Punkte 2979

Die Angular-Syntax besteht darin, den :-Operator zu verwenden, um das Äquivalent eines if-Modifiers auszuführen.

Füge der Geraden Zeilen die clearfix-Klasse hinzu. Dennoch kann der Ausdruck alles sein, was wir in einer normalen if-Bedingung haben können, und er sollte entweder true oder false auswerten.

16voto

Razan Paul Punkte 12902

Mit der Verwendung von Funktionen mit ng-class ist eine gute Option, wenn jemand komplexe Logik ausführen muss, um die geeignete CSS-Klasse zu bestimmen.

http://jsfiddle.net/ms403Ly8/2/

HTML:

        Testing ng-class using function       

CSS:

.testclass { Background: lightBlue}

JavaScript:

function testCtrl($scope) {
    $scope.getCSSClass = function() {
     return "testclass ";
  }     
}

9voto

Saeed Punkte 5405

Verwenden Sie dies

zum Beispiel wenn die Bedingung [2 == 2] lautet, sind die Zustände {true: '...', false: '...'}

9voto

Ninad Kulkarni Punkte 434

Für Angular 2 verwenden Sie dies

Inhalt

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X