Estilo ngClass con guión en clave


165

Espero que esto le ahorre a alguien un dolor de cabeza con los estilos que usan guiones, especialmente desde que bootstrap se ha vuelto tan popular.

Estoy usando angular 1.0.5 a modo de

<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.js"></script>

En la documentación de ngClass , el ejemplo es simple, pero también menciona que la expresión puede ser un mapa de nombres de clase a valores booleanos. Estaba tratando de usar el estilo "icon-white" en mi icono como se muestra en la documentación de arranque , dependiendo de una variable booleana.

<i class="icon-home" ng-class="{icon-white: someBooleanValue}">

La línea de arriba no funciona. La clase no se agrega icon-whitecuando someBooleanValuees verdadero. Sin embargo, si cambio la clave a iconWhite, se agrega con éxito a la lista de valores de clase. ¿Cómo se agregaría un valor con un guión?


1
Hola, bienvenido a SO! Debe actualizar su pregunta para dividirla en una pregunta y una respuesta: responder a su propia pregunta está bien y se recomienda si es útil. De esa manera, puede aceptar su respuesta, y otros que busquen pueden ver que la pregunta tiene una respuesta exitosa.
Alex Osborn

¡Gracias por tu sugerencia!
Foo L

Respuestas:


364

¡Después de horas de pirateo, resulta que el tablero se interpola! Se necesitan cotizaciones.

<i class="icon-home" ng-class="{'icon-white': someBooleanValue}">

Espero que esto ayude a alguien a arrancarse el pelo.

ACTUALIZAR:

En versiones anteriores de Angular, el uso de una barra diagonal inversa también funciona, pero no en las versiones más recientes.

<i class="icon-home" ng-class="{icon\-white: someBooleanValue}">

Probablemente se prefiera el primero, ya que puede buscarlo más fácilmente en su editor favorito.


15
Gracias por esto. También he perdido MUCHO MUCHO tiempo en este caso.
taudep

2
¡¡¡Gracias!!! Sabía que esto estaba sucediendo, pero no estaba seguro de cómo resolverlo. ¡GRACIAS!
Mark Ford

1
Yo uso AngularJS 1.2.3. El "\ -" no funciona para mí. "''" funcionó muy bien.
bobzsj87

1
Me preguntaba por qué esto no estaba funcionando para mí cuando parecía estar siguiendo otros ejemplos
nevster 01 de

$ scope.someBooleanValue = true
zloctb

11

\'icon-white\' funciona bien (con AngularJS 1.2.7)


Esta es la mejor respuesta, ya que es la más compatible con el futuro y compatible con versiones anteriores
Eric Steinborn

2
¡Hola! @EricSteinborn Soy del futuro, he venido para advertirte: ¡Esto no es amigable en absoluto!
Typo

0

alternativa para usos ng-class:

    .menu-disabled-true{
color: red;
}
    .menu-disabled-false{
color: green;
}


<div ng-controller="DeathrayMenuController">
<p class=menu-disabled-{{status}}>shanam</p>
 <button ng-click="action()">click me</button>
</div>

<script>



function DeathrayMenuController($scope) {
    $scope.status=true
    $scope.action= function(){
      $scope.status=!$scope.status
    }
}
</script>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.