¿Cómo se hace un ternario con AngularJS (en las plantillas)?
Sería bueno usar algunos atributos html (clases y estilo) en lugar de crear y llamar a una función del controlador.
fuente
¿Cómo se hace un ternario con AngularJS (en las plantillas)?
Sería bueno usar algunos atributos html (clases y estilo) en lugar de crear y llamar a una función del controlador.
Actualización : Angular 1.1.5 agregó un operador ternario , por lo que ahora podemos simplemente escribir
<li ng-class="$first ? 'firstRow' : 'nonFirstRow'">
Si está utilizando una versión anterior de Angular, sus dos opciones son:
(condition && result_if_true || !condition && result_if_false)
{true: 'result_if_true', false: 'result_if_false'}[condition]
El elemento 2. anterior crea un objeto con dos propiedades. La sintaxis de la matriz se utiliza para seleccionar la propiedad con nombre verdadero o la propiedad con nombre falso y devolver el valor asociado.
P.ej,
<li class="{{{true: 'myClass1 myClass2', false: ''}[$first]}}">...</li>
or
<li ng-class="{true: 'myClass1 myClass2', false: ''}[$first]">...</li>
$ first se establece en verdadero dentro de una repetición ng para el primer elemento, por lo que lo anterior aplicaría las clases 'myClass1' y 'myClass2' solo la primera vez a través del ciclo.
Sin embargo, con ng-class hay una manera más fácil: ng-class toma una expresión que debe evaluarse en uno de los siguientes:
Un ejemplo de 1) se dio anteriormente. Aquí hay un ejemplo de 3, que creo que se lee mucho mejor:
<li ng-class="{myClass: $first, anotherClass: $index == 2}">...</li>
La primera vez a través de un ciclo ng-repeat, se agrega la clase myClass. La 3ª vez ($ index comienza en 0), se agrega la clase anotherClass.
ng-style toma una expresión que debe evaluar a un mapa / objeto de nombres de estilo CSS a valores CSS. P.ej,
<li ng-style="{true: {color: 'red'}, false: {}}[$first]">...</li>
ng-style
actualizar, pero parece que solo se evalúa cuando el elemento se procesa por primera vez. (Novato angular aquí)Actualización: Angular 1.1.5 agregó un operador ternario, esta respuesta es correcta solo para las versiones anteriores a 1.1.5. Para 1.1.5 y posterior, vea la respuesta actualmente aceptada.
Antes de Angular 1.1.5:
La forma de un ternario en angularjs es:
Un ejemplo sería:
o:
fuente
Para textos en plantilla angular (
userType
es propiedad de $ scope, como $ scope.userType):fuente
Por ahora todos descubrimos que la versión 1.1.5 viene con un ternario adecuado en la
$parse
función, así que solo use esta respuesta como ejemplo de filtros:Y luego úsalo como
fuente
Ahí está: ¡el operador ternario se agregó al analizador angular en 1.1.5 ! ver el registro de cambios
Aquí hay un violín que muestra el nuevo operador ternario utilizado en la directiva ng-class.
fuente
Si bien puede usar la
condition && if-true-part || if-false-part
sintaxis en versiones anteriores de angular, el operador ternario habitualcondition ? true-part : false-part
está disponible en Angular 1.1.5 y versiones posteriores .fuente
Botón de alternar y cambiar el encabezado del botón y mostrar / ocultar el panel div. Ver el Plunkr
fuente