1. ホーム
  2. css

[解決済み] クラスを条件付きで適用する場合の最適な方法は何ですか?

2022-03-15 02:37:44

質問

配列があり、それが ulli というコントローラのプロパティがあります。 selectedIndex . にクラスを追加する最善の方法は何でしょうか? li をインデックスとする selectedIndex AngularJSで?

現在、私は、(手で)複製しています。 li のコードにクラスを追加し、そのクラスを li タグを使用し ng-showng-hide を1つだけ表示させることができます。 li インデックスごとに

解決方法は?

私のようにCSSのクラス名をControllerに入れたくない場合は、v1以前の時代から使っている古いトリックを紹介します。クラス名として直接評価される式を書けばいいのです。 選択された カスタムディレクティブは必要ありません。

ng:class="{true:'selected', false:''}[$index==selectedIndex]"

コロン付きの古い構文にご注意ください。

また、条件付きでクラスを適用する、新しい優れた方法があります。

ng-class="{selected: $index==selectedIndex}"

Angularはオブジェクトを返す式をサポートするようになりました。このオブジェクトの各プロパティ(名前)は、クラス名とみなされ、その値に応じて適用されるようになりました。

しかし、これらの方法は機能的に同等ではありません。以下はその例である。

ng-class="{admin:'enabled', moderator:'disabled', '':'hidden'}[user.role]"

したがって、基本的にモデルのプロパティをクラス名にマッピングすることで、既存のCSSクラスを再利用することができ、同時にControllerのコードからCSSクラスを排除することができます。