¿Hay alguna forma de hacer una expresión para algo como ng-class
ser condicional?
Por ejemplo, he intentado lo siguiente:
<span ng-class="{test: 'obj.value1 == \'someothervalue\''}">test</span>
El problema con este código es que no importa lo que obj.value1
sea, la prueba de clase siempre se aplica al elemento. Haciendo esto:
<span ng-class="{test: obj.value2}">test</span>
Mientras obj.value2
no sea igual a un valor verdadero, la clase no se aplica. Ahora puedo solucionar el problema en el primer ejemplo haciendo esto:
<span ng-class="{test: checkValue1()}">test</span>
Donde la checkValue1
función se ve así:
$scope.checkValue1 = function() {
return $scope.obj.value === 'somevalue';
}
Me pregunto si así es como ng-class
se supone que debe funcionar. También estoy creando una directiva personalizada donde me gustaría hacer algo similar a esto. Sin embargo, no puedo encontrar una manera de ver una expresión (y tal vez eso es imposible y la razón por la que funciona así).
Aquí hay un plnkr para mostrar lo que quiero decir.
ng-class="'label-success': obj.value1 == 'Ready', 'label-warning': obj.value1 == 'On hold'}"
Respuestas:
Su primer intento fue casi correcto, debería funcionar sin las comillas.
Aquí hay un plnkr .
La directiva ngClass funcionará con cualquier expresión que evalúe verdadero o falso, un poco similar a las expresiones Javascript pero con algunas diferencias, puede leer aquí . Si su condicional es demasiado complejo, puede usar una función que devuelva verdadero o falso, como lo hizo en su tercer intento.
Solo para complementar: también puede usar operadores lógicos para formar expresiones lógicas como
fuente
'
contrario si deseas agregar más clases o si tu clase tiene guiones o guiones bajos, no funcionará.ng-class="{'test test-2: obj.value1 === 'value'}"
ng-class="{'test test-2': obj.value1 === 'value'}"
[class.test]="obj.value1 == 'someotervalue'"
.ng-class="{danger:!enabled || (type === 'WHEEL' && !isOnline) }
Usando ng-class dentro de ng-repeat
Para cada estado en task.status se usa una clase diferente para la fila.
fuente
Angular JS proporciona esta funcionalidad en la directiva ng-class . En el que puede poner condición y también asignar clase condicional. Puede lograr esto de dos maneras diferentes.
Tipo 1
En este código de clase se aplica de acuerdo con el valor de estado de valor
si el valor de estado es 0 , aplique la clase uno
si el valor de estado es 1 , aplique la clase dos
si el valor de estado es 2 , aplique la clase tres
Tipo 2
En qué clase se aplicará por valor de estado
si el valor de estado es 1 o verdadero , agregará la clase test_yes
si el valor de estado es 0 o falso , agregará la clase test_no
fuente
<div ng-class="{'Image' || 'image': 'image-icon', 'Video' || 'video' || 'aVideo' || 'bVideo' : 'video-icon'}[resource.type]"></div>
Veo excelentes ejemplos arriba, pero todos comienzan con llaves (mapa json). Otra opción es devolver un resultado basado en el cálculo. El resultado también puede ser una lista de nombres de clase css (no solo un mapa). Ejemplo:
o
Explicación: Si el estado está activo, se
enabled
usará la clase . De lo contrario,disabled
se utilizará la clase .La lista
[]
se usa para usar múltiples clases (no solo una).fuente
Hay un método simple que podría usar con el atributo de clase html y la abreviatura si / si no. No hay necesidad de hacerlo tan complejo. Solo usa el siguiente método.
Happy Coding, Nimantha Perera
fuente
Le mostraré dos métodos por los cuales puede aplicar dinámicamente ng-class
Paso 1
Mediante el uso de operador ternario
Salida
Si su condición es verdadera, se aplicará la clase 1 a su elemento; de lo contrario, se aplicará la clase 2.
Desventaja
Cuando intente cambiar el valor condicional en tiempo de ejecución, la clase de alguna manera no cambiará. Por lo tanto, le sugiero que vaya al paso 2 si tiene requisitos como el cambio dinámico de clase.
Paso 2
Salida
si su condición coincide con el valor1, entonces se aplicará la clase1 a su elemento, si coincide con el valor2, se aplicará la clase2 y así sucesivamente. Y el cambio dinámico de clase funcionará bien con él.
Espero que esto te ayudará.
fuente
La sintaxis angular es usar el operador : para realizar el equivalente de un modificador if
Agregue la clase clearfix a las filas pares. No obstante, la expresión podría ser cualquier cosa que podamos tener en condiciones normales si se debe evaluar como verdadero o falso.
fuente
Usar la función con ng-class es una buena opción cuando alguien tiene que ejecutar una lógica compleja para decidir la clase CSS adecuada.
http://jsfiddle.net/ms403Ly8/2/
HTML:
CSS:
JavaScript :
fuente
utilizar este
por ejemplo, si la condición es [2 == 2], los estados son {verdadero: '...', falso: '...'}
fuente
Para Angular 2, use esto
fuente
[ngClass]="['base-class', thread.isActive ? 'base-class--active' : '']"
ng-class
es una directiva de AngularJs centrales. En el que puede utilizar "Sintaxis de cadena", "Sintaxis de matriz", "Expresión evaluada", "Operador ternario" y muchas más opciones que se describen a continuación:ngClass usando la sintaxis de cadena
Esta es la forma más sencilla de usar ngClass. Simplemente puede agregar una variable angular a ng-class y esa es la clase que se utilizará para ese elemento.
Ejemplo de demostración de ngClass usando la sintaxis de cadena
ngClass usando la sintaxis de matriz
Esto es similar al método de sintaxis de cadenas, excepto que puede aplicar varias clases.
ngClass usando expresión evaluada
Un método más avanzado para usar ngClass (y uno que probablemente usará más) es evaluar una expresión. La forma en que esto funciona es que si se evalúa una variable o expresión
true
, puede aplicar una determinada clase. Si no, entonces la clase no se aplicará.Ejemplo de ngClass usando expresión evaluada
ngClass usando valor
Esto es similar al método de expresión evaluado, excepto que solo puede comparar múltiples valores con la única variable.
ngClass usando el operador ternario
El operador ternario nos permite usar la taquigrafía para especificar dos clases diferentes, una si una expresión es verdadera y otra para falso. Aquí está la sintaxis básica para el operador ternario:
Evaluación del primer, último o número específico
Si está utilizando la
ngRepeat
directiva y que desea aplicar a la clasesfirst
,last
o un número específico en la lista, puede utilizar las propiedades especiales dengRepeat
. Estos incluyen$first
,$last
,$even
,$odd
, y algunos otros. Aquí hay un ejemplo de cómo usarlos.fuente