を使用して要素のクラスを切り替えようとしています 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;
}
基本的に、$scope.autoScroll
trueの場合はng-classにicon-autoscroll
、falseの場合はicon-autoscroll-disabled
私が今持っているものが機能せず、コンソールでこのエラーが発生しています
Error: Lexer Error: Unexpected next character at columns 18-18 [?] in expression [{(isAutoScroll()) ? 'icon-autoscroll' : 'icon-autoscroll-disabled'}].
これを正しく行うにはどうすればよいですか?
編集
解決策1:(古い)
<button class="btn" ng-click="autoScroll = !autoScroll">
<i ng-class="{'icon-autoscroll': autoScroll, 'icon-autoscroll-disabled': !autoScroll}"></i>
</button>
編集2
ソリューション2:
Solution 3
Stewieから提供されたを使用する必要があるため、ソリューションを更新したかった。三項演算子に関しては(そして私にとっては最も読みやすく)、これが最も標準的です。解決策は
<button class="btn" ng-click="autoScroll = !autoScroll">
<i ng-class="autoScroll ? 'icon-autoscroll' : 'icon-autoscroll-disabled'"></i>
</button>
に変換します:
if (autoScroll == true) ?
//クラスを使用'icon-autoscroll' :
//その他の使用'icon-autoscroll-disabled'
autoScroll
ここで各ボタンに効果があるのでしょうか?(私はこれを複数のボタンでテストしましたが、うまくいきます)つまり、各ボタンをクリックすると、すべてのボタンではなく、そのボタンだけに影響します。
angular expressions
ドキュメントごとに条件を使用することはできません => 制御フローステートメントなし:角度式では、条件、ループ、スローのいずれも実行できません。別の関数またはディレクティブを使用する