Ich versuche, die Klasse eines Elements mit umzuschalten ng-class
<button class="btn">
<i ng-class="{(isAutoScroll()) ? 'icon-autoscroll' : 'icon-autoscroll-disabled'}"></i>
</button>
isAutoScroll ():
$scope.isAutoScroll = function()
{
$scope.autoScroll = ($scope.autoScroll) ? false : true;
return $scope.autoScroll;
}
Grundsätzlich, wenn $scope.autoScroll
es wahr ist, möchte ich, dass ng-class ist, icon-autoscroll
und wenn es falsch ist, möchte ich, dass es so isticon-autoscroll-disabled
Was ich jetzt habe, funktioniert nicht und erzeugt diesen Fehler in der Konsole
Error: Lexer Error: Unexpected next character at columns 18-18 [?] in expression [{(isAutoScroll()) ? 'icon-autoscroll' : 'icon-autoscroll-disabled'}].
Wie mache ich das richtig?
BEARBEITEN
Lösung 1: (veraltet)
<button class="btn" ng-click="autoScroll = !autoScroll">
<i ng-class="{'icon-autoscroll': autoScroll, 'icon-autoscroll-disabled': !autoScroll}"></i>
</button>
BEARBEITEN 2
Lösung 2:
Ich wollte die Lösung aktualisieren, da Solution 3
sie von Stewie bereitgestellt werden sollte. Es ist der Standard, wenn es um ternäre Operatoren geht (und für mich am einfachsten zu lesen). Die Lösung wäre
<button class="btn" ng-click="autoScroll = !autoScroll">
<i ng-class="autoScroll ? 'icon-autoscroll' : 'icon-autoscroll-disabled'"></i>
</button>
wird übersetzt in:
if (autoScroll == true) ?
// benutze Klasse 'icon-autoscroll' :
// sonst benutze'icon-autoscroll-disabled'
autoScroll
hier nur in jedem Knopf wirkt? (Ich habe dies mit mehreren Schaltflächen getestet und es funktioniert auch gut.) Ich meine, wenn ich auf jede Schaltfläche klicke, wirkt sich dies nur auf diese Schaltfläche aus, anstatt auf alle Schaltflächen.
angular expressions
per docs verwenden => Keine Kontrollflussanweisungen: Sie können im Winkelausdruck keine der folgenden Aktionen ausführen: Bedingungen, Schleifen oder Wurf. Verwenden Sie eine andere Funktion oder Anweisung