テーブル全体に1つのクラスが既に適用されている(たとえば、奇数行に色が適用されている<myClass tbody tr:nth-child(even) td>
)場合に、テーブル要素内にクラスを適用すると問題が発生しました。要素をDeveloper Toolsで検査すると、にelement.style
スタイルが割り当てられていないようです。したがって、を使用する代わりに、を使用しng-class
てみng-style
ましたが、この場合、新しいCSS属性が内に表示されelement.style
ます。このコードは私にとってはうまくいきます:
<tr ng-repeat="element in collection">
[...amazing code...]
<td ng-style="myvar === 0 && {'background-color': 'red'} ||
myvar === 1 && {'background-color': 'green'} ||
myvar === 2 && {'background-color': 'yellow'}">{{ myvar }}</td>
[...more amazing code...]
</tr>
Myvarは私が評価しているものであり、myvarの値に<td>
応じてそれぞれにスタイルを適用します。これにより、CSSクラスによってテーブル全体に適用された現在のスタイルが上書きされます。
更新
たとえば、ページにアクセスするときなどにテーブルにクラスを適用する場合は、次の構造を使用できます。
<li ng-class="{ active: isActive('/route_a') || isActive('/route_b')}">
基本的に、ng-classをアクティブにするために必要なのは、適用するクラスとtrueまたはfalseステートメントです。Trueはクラスを適用し、Falseは適用しません。したがって、ここではページのルートの2つのチェックとそれらの間のORがあるため、/route_a
ORにいるroute_b
場合、アクティブクラスが適用されます。
これは、trueまたはfalseを返す論理関数を右側に持つだけで機能します。
したがって、最初の例では、ng-styleは3つのステートメントによって条件付けられています。それらすべてがfalseの場合、スタイルは適用されませんが、ロジックに従って、少なくとも1つが適用されるため、ロジック式はどの変数比較がtrueであるかをチェックします。空でない配列は常にtrueであるため、配列を戻り値として残し、trueが1つしかない場合は、応答全体にORを使用していることを考慮して、残りのスタイルが適用されます。
ところで、私はあなたに関数isActive()を与えるのを忘れていました:
$rootScope.isActive = function(viewLocation) {
return viewLocation === $location.path();
};
新しいアップデート
ここに私が本当に役立つと思うものがあります。変数の値に応じてクラスを適用する必要がある場合(たとえば、の内容に応じたアイコン)div
、次のコードを使用できます(で非常に役立ちますng-repeat
)。
<i class="fa" ng-class="{ 'fa-github' : type === 0,
'fa-linkedin' : type === 1,
'fa-skype' : type === 2,
'fa-google' : type === 3 }"></i>
Font Awesomeのアイコン