ngclass else ejemplos class dynamic angularjs

else - ng-class if



Clase dinĂ¡mica en Angular.js (3)

Quiero agregar dinámicamente una clase css a un elemento <li> que estoy haciendo un bucle. El ciclo es así:

<li ng-repeat="todo in todos" ng-class="{{todo.priority}}"> <a href="#/todos/{{todo.id}}">{{todo.title}}</a> <p>{{todo.description}}</p> </li>

En mi modelo de tareas pendientes, tengo la prioridad de propiedad que puede ser "urgente", "no tan importante" o "normal" y solo quiero asignar la clase para cada elemento.

Sé que puedo hacer esto para un booleano con algo como ng-class="{''urgent'': todo.urgent}" Pero mi variable no es booleana, pero tiene tres valores. ¿Cómo haría esto? Tenga en cuenta también que no quiero usar ng-style="..." ya que mi clase alterará varias cosas visuales.


Casi lo tienes :)
Debería estar sin marcado de interpolación ( {{ y }} ):

<li ng-repeat="todo in todos" ng-class="todo.priority"> ...


Si solo desea agregar una clase, use el atributo de class con interpolación:

class="priority-is-{{todo.priority}}"


Simplemente puede asignar una función como expresión y devolver la clase adecuada desde allí. Editar: también hay una mejor solución para las clases dinámicas. Por favor, mira la nota a continuación.

Fragmento de la vista:

<div ng-class="appliedClass(myObj)">...</div>

y en el controlador:

$scope.appliedClass = function(myObj) { if (myObj.someValue === "highPriority") { return "special-css-class"; } else { return "default-class"; // Or even "", which won''t add any additional classes to the element } }

Mejor forma de hacer esto

Recientemente aprendí sobre otro enfoque. Usted pasa un objeto que tiene propiedades correspondientes a las clases en las que opera, y los valores son expresiones o variables booleanas. Un simple ejemplo:

ng-class="{ active: user.id == activeId }"

En este caso, active clase active se agregará al elemento siempre que user.id coincida con activeId desde el objeto $scope .